Aku ingin tahu arti dari {} +
dalam exec
perintah, dan apa perbedaan antara {} +
dan {} \;
. Tepatnya, apa perbedaan antara keduanya:
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
Aku ingin tahu arti dari {} +
dalam exec
perintah, dan apa perbedaan antara {} +
dan {} \;
. Tepatnya, apa perbedaan antara keduanya:
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
Jawaban:
Menggunakan ;
(titik koma) atau +
(tanda plus) adalah wajib untuk mengakhiri perintah shell yang dipanggil oleh -exec
/ execdir
.
Perbedaan antara ;
(titik koma) atau +
(tanda tambah) adalah bagaimana argumen diteruskan ke parameter -exec
/ find -execdir
. Sebagai contoh:
menggunakan ;
akan mengeksekusi banyak perintah (secara terpisah untuk setiap argumen),
Contoh:
$ find /etc/rc* -exec echo Arg: {} ';'
Arg: /etc/rc.common
Arg: /etc/rc.common~previous
Arg: /etc/rc.local
Arg: /etc/rc.netboot
Semua argumen berikut
find
dianggap sebagai argumen untuk perintah.String
{}
diganti oleh nama file saat ini sedang diproses.
menggunakan +
akan mengeksekusi perintah sekecil mungkin (karena argumen digabungkan bersama). Ini sangat mirip dengan cara xargs
kerja perintah, sehingga akan menggunakan sebanyak mungkin argumen per perintah untuk menghindari melebihi batas maksimum argumen per baris.
Contoh:
$ find /etc/rc* -exec echo Arg: {} '+'
Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot
Baris perintah dibangun dengan menambahkan setiap nama file yang dipilih di akhir.
Hanya satu instance dari
{}
yang diizinkan dalam perintah.
Lihat juga:
Mengingat bahwa perintah find terdapat di bawah tiga file:
fileA
fileB
fileC
Jika Anda menggunakan -exec
dengan tanda tambah ( +
),
find . -type f -exec chmod 775 {} +
boleh jadi:
chmod 775 fileA fileB fileC
Baris perintah dibangun dengan menambahkan setiap nama file yang cocok di akhir, yang dengan cara yang sama xargs
membangun baris perintahnya. Jumlah total doa perintah ( chmod
, dalam kasus ini) akan jauh lebih sedikit daripada jumlah file yang cocok.
Jika Anda menggunakan -exec
dengan titik koma ( ;
),
find . -type f -exec chmod 775 {} \;
boleh jadi:
chmod 775 fileA
chmod 775 fileB
chmod 775 fileC
Sesuai man find
:
-exec command {} + Varian aksi -exec ini menjalankan perintah yang ditentukan pada file yang dipilih, tetapi baris perintah dibangun dengan menambahkan setiap nama file yang dipilih di akhir; jumlah total doa perintah akan jauh lebih sedikit daripada jumlah file yang cocok. Baris perintah dibangun dengan cara yang sama seperti xargs membangun baris perintahnya. Hanya satu instance dari '{}' diizinkan dalam perintah. Perintah dijalankan di direktori awal.
man find(1)
banyak detail, mudah ditemukan oleh siapa pun. Jangan malas.