Dari pemahaman saya, berikut ini harus berarti persis sama:
ls -1 | xargs file {}
ls -1 | xargs -I{} file {}
jika opsi -I tidak ditentukan, defaultnya adalah -I {}.
Saya ingin membuat daftar semua file di direktori saat ini dan menjalankan fileperintah pada masing-masing. Beberapa memiliki ruang dalam namanya. Namun, saya perhatikan perbedaannya. Lihat di bawah:
$ ls -1
Hello World
$ ls -1 | xargs file {}
{}: ERROR: cannot open `{}' (No such file or directory)
Hello: ERROR: cannot open `Hello' (No such file or directory)
World: ERROR: cannot open `World' (No such file or directory)
$ ls -1 | xargs -I{} file {}
Hello World: directory
Dengan -I {} ditentukan secara eksplisit, kekosongan dalam nama file diperlakukan seperti yang diharapkan.
xargs fileatau xargs -I{} file {}. Seharusnya tidak xargs file {}. Saya kira ketika secara eksplisit menentukan -I {}, bash akan memperlakukannya sebagai file "Hello World". Tanpa -I {}, itu diperlakukan sebagai file Hello World.
-1opsi untuk ls, tetapi aktif secara default ketika output dari lsfile atau pipa, jadi Anda tidak membutuhkannya di sini. (3) Anda bingung -Idengan opsi -i(huruf kecil I) yang sudah usang . -ifoosama dengan -Ifoo, tetapi polos -isama dengan -I{}. Tapi gunakan -I{}. (4) Jika Anda benar-benar ingin melakukan apa yang Anda katakan ingin Anda lakukan, mengapa tidak katakan saja fileĀ *?
filedi atasnya. Tapi saya datang dengan contoh sederhana menggunakan ls. Kamu benar. Untuk itu, file *adalah yang terbaik.
-exec.