GNU/Linux >> Belajar Linux >  >> Linux

Temukan -exec + Vs Temukan | Xargs:Yang Mana Yang Harus Dipilih?

Saya mengerti bahwa -exec dapat mengambil + opsi untuk meniru perilaku xargs . Apakah ada situasi di mana Anda lebih memilih satu formulir daripada yang lain?

Saya pribadi cenderung lebih suka bentuk pertama, jika hanya untuk menghindari penggunaan pipa. Saya pikir pasti pengembang find harus sudah melakukan optimasi yang sesuai. Apakah saya benar?

Jawaban yang Diterima:

Anda mungkin ingin berantai panggilan untuk menemukan (sekali, ketika Anda mengetahui, bahwa itu mungkin, yang mungkin hari ini). Ini, tentu saja, hanya mungkin selama Anda tinggal di find. Setelah Anda menyalurkan ke xargs, itu di luar jangkauan.

Contoh kecil, dua file a.lst dan b.lst:

cat a.lst
fuddel.sh
fiddel.sh

cat b.lst
fuddel.sh

Tidak ada trik di sini – hanya fakta bahwa keduanya mengandung “fuddel” tetapi hanya satu yang mengandung “fiddel”.

Anggap saja kita tidak mengetahuinya. Kami mencari file yang cocok dengan 2 kondisi:

find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097    4 -rw-r--r--   1 stefan   stefan         20 Jun 27 17:05 ./a.lst

Yah, mungkin Anda tahu sintaks grep atau program lain untuk melewatkan kedua string sebagai kondisi, tapi bukan itu intinya. Setiap program yang dapat mengembalikan nilai benar atau salah, diberikan file sebagai argumen, dapat digunakan di sini – grep hanyalah contoh yang populer.

Dan perhatikan, Anda dapat mengikuti find -exec dengan perintah find lainnya, seperti -ls atau -hapus atau sesuatu yang serupa. Perhatikan, bahwa delete tidak hanya rm (menghapus file), tetapi rmdir (menghapus direktori) juga.

Rantai seperti itu dibaca sebagai kombinasi perintah AND, selama tidak ditentukan lain (yaitu dengan -or switch (dan parens (yang membutuhkan masking))).

Jadi Anda tidak meninggalkan rantai pencarian, yang merupakan hal yang berguna. Saya tidak melihat keuntungan apa pun dalam menggunakan -xargs, karena Anda harus berhati-hati dalam meneruskan file, yang merupakan sesuatu yang tidak perlu dilakukan find – ini secara otomatis menangani pengiriman setiap file sebagai argumen tunggal untuk Anda.

Jika Anda yakin Anda memerlukan beberapa penyembunyian untuk menemukan {} kurung kurawal, silakan kunjungi pertanyaan saya yang meminta bukti. Pernyataan saya adalah:Anda tidak.

Terkait:kepatuhan -Temukan Arti- Pencarian Kamus!
Linux
  1. Debian vs. Ubuntu untuk Penggunaan Server, Mana yang Harus Dipilih

  2. AlmaLinux vs Rocky Linux:Mana yang Harus Dipilih?

  3. Mendapatkan Opsi -exec Di Temukan Untuk Bekerja?

  1. Memanipulasi {} Mengembalikan String Dari Find -exec?

  2. Bagaimana cara memasukkan pipa | di linux saya temukan -exec perintah?

  3. temukan -exec cmd {} + vs | xargs

  1. Grep Rekursif Vs Temukan / -type F -exec Grep {}; Mana yang Lebih Efisien/Lebih Cepat?

  2. temukan -exec fungsi shell di Linux?

  3. Size() vs ls -la vs du -h ukuran mana yang benar?