Apa yang dilakukan + dalam perintah find / path / -exec '{}' +?


13

Apa +di find /path/ -exec command '{}' +do? sebagai lawanfind /path/ -exec command '{}' \;

Jawaban:


17

Tanda '+' membuat satu baris perintah besar dari semua file yang ditemukan untuk meminimalkan jumlah perintah yang akan dijalankan.

Mengingat bahwa perintah find menemukan empat file.

find . -type f -exec command '{}' \;

akan menghasilkan

command file1
command file2
command file3
command file4 

Di samping itu

find . -type f -exec command '{}' \+

menghasilkan

command file1 file2 file3 file4

3
Jika Anda tahu xargs, -exec … {} +lakukan hal yang sama -print | xargs …, tetapi tanpa masalah mengutip ( -print0 | xargs -0adalah cara lain, tapi ini kurang portabel).
— Gilles 'SANGAT berhenti menjadi jahat'

4

Dari halaman manual:

perintah -exec {} +

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.


1
pria yang sangat ... singkat? Saya menemukan itu kurang dalam, dan kejelasan.
— xenoterracide

Idenya bukan untuk membabi buta satu proses untuk setiap file, tetapi untuk mengumpulkan nama file bersama dan memanggil perintah lebih sedikit. Contoh: alih-alih membuat 3 proses "rm FILENAME" yang berbeda, ia mengumpulkan nama file dan melakukan "rm FILE1 FILE2 FILE3".
— tante

IIRC beberapa versi xargs memiliki opsi untuk mengelompokkan nama-nama ini bersama-sama hingga batas yang ditentukan, sehingga Anda dapat mengambil manfaat dari ini tetapi juga menghindari meluap ketika Anda memiliki daftar besar juga.
— Kevin Cantu

(Cari sendiri adalah bahasa kecil yang menakutkan!)
— Kevin Cantu

findmemberi saya semi.
— Matt Alexander
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.