Alasan yang digunakan orang xargsdalam kombinasi dengan find adalah bahwa banyak nama file akan diteruskan ke permohonan program yang sama dengan xargspeluncuran program apa pun . Misalnya, jika findmengembalikan file foo , bar , dan baz , berikut ini akan berjalan mvhanya sekali:
find sourceDir [...] -print0 | xargs -0 mv -t destDir
Secara efektif, ini memanggil mvseperti 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.shdan 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 ffmpegdengan argumen yang sesuai.
xargssecara umum mungkin ingin memeriksa stackoverflow.com/questions/3770432/… .