Semua argumen berikut finddianggap 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 xargskerja perintah, sehingga akan menggunakan sebanyak mungkin argumen per perintah untuk menghindari melebihi batas maksimum argumen per baris.
Ada adalah perbedaan dan satu besar. Lihat jawaban user1116056
Jahid
24
Mengingat bahwa perintah find terdapat di bawah tiga file:
fileA
fileB
fileC
Jika Anda menggunakan -execdengan 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 xargsmembangun baris perintahnya. Jumlah total doa perintah ( chmod, dalam kasus ini) akan jauh lebih sedikit daripada jumlah file yang cocok.
Jika Anda menggunakan -execdengan titik koma ( ;),
-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.man exec
!{} +
penggunaan sebelumnya. Saya biasanya menggunakan xargs untuk itu (dan seringfind ... -print0 | xargs -0 ...
)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:
menggunakan
+
akan mengeksekusi perintah sekecil mungkin (karena argumen digabungkan bersama). Ini sangat mirip dengan caraxargs
kerja perintah, sehingga akan menggunakan sebanyak mungkin argumen per perintah untuk menghindari melebihi batas maksimum argumen per baris.Contoh:
Lihat juga:
man find
sumber
Mengingat bahwa perintah find terdapat di bawah tiga file:
Jika Anda menggunakan
-exec
dengan tanda tambah (+
),boleh jadi:
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 (;
),boleh jadi:
sumber
Sesuai
man find
:sumber