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 file
perintah 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 file
atau 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
.
-1
opsi untuk ls
, tetapi aktif secara default ketika output dari ls
file atau pipa, jadi Anda tidak membutuhkannya di sini. (3) Anda bingung -I
dengan opsi -i
(huruf kecil I
) yang sudah usang . -ifoo
sama dengan -Ifoo
, tetapi polos -i
sama dengan -I{}
. Tapi gunakan -I{}
. (4) Jika Anda benar-benar ingin melakukan apa yang Anda katakan ingin Anda lakukan, mengapa tidak katakan saja fileĀ *
?
file
di atasnya. Tapi saya datang dengan contoh sederhana menggunakan ls
. Kamu benar. Untuk itu, file *
adalah yang terbaik.
-exec
.