A razão pela qual as pessoas usam xargs
em combinação com o find é que vários nomes de arquivos serão passados para a mesma chamada de programa de qualquer programa xargs
launch. Por exemplo, se find
retornar os arquivos foo , bar e baz , o seguinte executará mv
apenas uma vez:
find sourceDir [...] -print0 | xargs -0 mv -t destDir
Efetivamente, chama mv
da seguinte forma:
mv -t destDir foo bar baz
Se você não precisa ou não quer este comportamento (como eu suponho que é o caso aqui), você pode simplesmente usar find
' -exec
.
Nesse caso, uma solução fácil seria escrever um script de shell curto, como o seguinte:
#!/usr/bin/env bash
[[ -f "$1" ]] || { echo "$1 not found" ; exit 1 ; }
P="$1"
F="$( basename $P )"
ffmpeg -i "$P" -f flv "$F"
Salvar como myffmpeg.sh
e executar chmod +x myffmpeg.sh
. Em seguida, execute o seguinte:
find . -iname "*.mov" -exec /path/to/myffmpeg.sh {} \;
Isso invocará o script de shell uma vez para cada arquivo encontrado. O shell script, por sua vez, extrai o nome do arquivo do caminho completo e chama ffmpeg
com os argumentos apropriados.