xargs rm
akan memanggil rm
dengan semua argumen sebagai parameter berangkat dengan spasi.
xargs -i{} rm {}
akan memanggil rm {}
untuk setiap argumen dan {}
akan digantikan oleh argumen saat ini.
Jika Anda memiliki 2 argumen a.txt
dan b.txt
, xargs rm
akan memanggil ini
rm a.txt b.txt
Tapi xargs -i{} rm {}
akan memanggil
rm a.txt
rm b.txt
Ini karena -i
opsi menyiratkan -L 1
pilihan yang berarti perintah rm
hanya akan mengambil 1
baris setiap waktu. Dan di sini setiap baris hanya berisi 1 argumen.
Periksa tautan Ideone ini untuk mendapatkan lebih banyak ide tentangnya.
Dengan kawat gigi itu akan memunculkan satu rm
proses per file. Tanpa kawat gigi, xargs
akan meneruskan sebanyak mungkin nama file ke setiap rm
perintah.
Bandingkan
ls | xargs echo
dan
ls | xargs -i echo '{}'
Opsi -i (setara dengan --replace) membuat semacam placeholder tempat xargs menyimpan input yang baru saja diterima. Dalam perintah kedua Anda, placeholdernya adalah "{}", ini berfungsi seperti opsi find -exec. Setelah ditentukan, xargs akan mengganti placeholder ini dengan seluruh baris input. Jika Anda tidak menyukai nama "{}", Anda bisa mendefinisikannya sendiri:
ls | xargs -iPLACEHOLDER gema PLACEHOLDER
Dalam kasus Anda, kedua perintah menghasilkan hasil yang sama. Dalam bentuk kedua, Anda hanya memperjelas perilaku default dengan opsi -i.