O motivo pelo qual as pessoas usam xargsem combinação com o find é que vários nomes de arquivos serão passados para a mesma chamada de programa de qualquer programa xargsiniciado. Por exemplo, se findretornar os arquivos foo , bar e baz , o seguinte será executado mvapenas uma vez:
find sourceDir [...] -print0 | xargs -0 mv -t destDir
Efetivamente, ele chama mvda seguinte maneira:
mv -t destDir foo bar baz
Se você não precisa ou deseja esse comportamento (como eu assumo é o caso aqui), você pode simplesmente usar find's -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"
Salve como myffmpeg.she execute chmod +x myffmpeg.sh. Em seguida, execute o seguinte:
find . -iname "*.mov" -exec /path/to/myffmpeg.sh {} \;
Isso chamará o script de shell uma vez para cada arquivo encontrado. O script de shell, por sua vez, extrai o nome do arquivo do caminho completo e chama ffmpegcom os argumentos apropriados.
xargsem geral podem querer consultar stackoverflow.com/questions/3770432/… .