Ini dapat dilakukan dengan find
langsung menggunakan -exec
:
find . -name "*.xml" -type f -exec xmllint --output '{}' --format '{}' \;
Apa yang diteruskan -exec
akan dipanggil sekali per file yang ditemukan dengan parameter template {}
diganti dengan nama file saat ini. Perintah \;
di akhir find hanya mengakhiri baris.
Penggunaan kata xargs
tidak benar-benar diperlukan dalam kasus ini karena kita perlu memanggil xmllint
sekali per file karena nama file input dan output harus ditentukan dalam panggilan yang sama.
xargs
akan diperlukan jika perintah yang dikirim ke dari find bekerja pada beberapa file sekaligus dan daftar itu panjang. Anda tidak dapat melakukan itu dalam kasus ini, karena Anda harus meneruskan nama file tunggal ke --output
opsi xmllint
. Tanpa xargs
Anda bisa berakhir dengan kesalahan "Daftar Argumen terlalu lama" jika Anda memproses banyak file. xargs
juga mendukung string ganti file dengan -I
opsi:
find . -name "*.xml" -type f | xargs -I'{}' xmllint --output '{}' --format '{}'
Akan melakukan hal yang sama seperti find -exec
perintah di atas. Jika ada folder Anda yang memiliki karakter aneh di ruang yang sama, Anda harus menggunakan -0
opsi find
dan xargs
. Tetapi menggunakan xargs
dengan -I
menyiratkan opsi -L 1
yang berarti hanya memproses 1 file pada satu waktu, jadi Anda mungkin juga langsung menggunakan find
dengan -exec
.