La razón por la que las personas usan xargs
en combinación con find es que se pasarán varios nombres de archivo a la misma invocación de programa de cualquier programa que se xargs
inicie. Por ejemplo, si find
devuelve los archivos foo , bar y baz , lo siguiente se ejecutará mv
solo una vez:
find sourceDir [...] -print0 | xargs -0 mv -t destDir
Efectivamente, se llama mv
así:
mv -t destDir foo bar baz
Si no necesita o desea este comportamiento (como supongo que es el caso aquí), simplemente puede usar find
's -exec
.
En este caso, una solución fácil sería escribir un script de shell corto, como el siguiente:
#!/usr/bin/env bash
[[ -f "$1" ]] || { echo "$1 not found" ; exit 1 ; }
P="$1"
F="$( basename $P )"
ffmpeg -i "$P" -f flv "$F"
Guardar como myffmpeg.sh
y correr chmod +x myffmpeg.sh
. Luego, ejecute lo siguiente:
find . -iname "*.mov" -exec /path/to/myffmpeg.sh {} \;
Esto invocará el script de shell una vez por cada archivo encontrado. El script de shell a su vez extrae el nombre del archivo de la ruta completa y llama ffmpeg
con los argumentos apropiados.
xargs
en general, pueden consultar stackoverflow.com/questions/3770432/… .