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.