Il motivo per cui le persone usano xargs
in combinazione con find è che più nomi di file verranno passati allo stesso richiamo del programma di qualunque programma venga xargs
avviato. Ad esempio, se find
restituisce i file foo , bar e baz , quanto segue verrà eseguito mv
una sola volta:
find sourceDir [...] -print0 | xargs -0 mv -t destDir
In effetti, chiama mv
come il seguente:
mv -t destDir foo bar baz
Se non avete bisogno o volete questo comportamento (come presumo sia il caso qui), si può semplicemente utilizzare find
s' -exec
.
In questo caso, una soluzione semplice sarebbe quella di scrivere uno script di shell corta, come il seguente:
#!/usr/bin/env bash
[[ -f "$1" ]] || { echo "$1 not found" ; exit 1 ; }
P="$1"
F="$( basename $P )"
ffmpeg -i "$P" -f flv "$F"
Salva come myffmpeg.sh
ed esegui chmod +x myffmpeg.sh
. Quindi, esegui quanto segue:
find . -iname "*.mov" -exec /path/to/myffmpeg.sh {} \;
Questo invocherà lo script della shell una volta per ogni file trovato. Lo script shell a sua volta estrae il nome del file dal percorso completo e chiama ffmpeg
con gli argomenti appropriati.
xargs
in generale potrebbero voler controllare stackoverflow.com/questions/3770432/… .