Alasan yang digunakan orang xargs
dalam kombinasi dengan find adalah bahwa banyak nama file akan diteruskan ke permohonan program yang sama dengan xargs
peluncuran program apa pun . Misalnya, jika find
mengembalikan file foo , bar , dan baz , berikut ini akan berjalan mv
hanya sekali:
find sourceDir [...] -print0 | xargs -0 mv -t destDir
Secara efektif, ini memanggil mv
seperti berikut:
mv -t destDir foo bar baz
Jika Anda tidak perlu atau ingin perilaku ini (seperti yang saya asumsikan adalah kasus di sini), Anda dapat menggunakan find
's -exec
.
Dalam hal ini, solusi mudahnya adalah dengan menulis skrip shell pendek, seperti berikut:
#!/usr/bin/env bash
[[ -f "$1" ]] || { echo "$1 not found" ; exit 1 ; }
P="$1"
F="$( basename $P )"
ffmpeg -i "$P" -f flv "$F"
Simpan sebagai myffmpeg.sh
dan jalankan chmod +x myffmpeg.sh
. Kemudian, jalankan yang berikut:
find . -iname "*.mov" -exec /path/to/myffmpeg.sh {} \;
Ini akan memanggil skrip shell sekali untuk setiap file yang ditemukan. Script shell pada gilirannya mengekstrak nama file dari path lengkap, dan memanggil ffmpeg
dengan argumen yang sesuai.
xargs
secara umum mungkin ingin memeriksa stackoverflow.com/questions/3770432/… .