Anda mungkin ingin membuat panggilan untuk menemukan (sekali, ketika Anda belajar, itu mungkin, yang mungkin hari ini). Ini, tentu saja, hanya mungkin selama Anda tetap menemukan. Setelah Anda melakukan pipe ke xargs, hal 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".
Asumsikan kita tidak tahu itu. Kami mencari file yang sesuai dengan 2 ketentuan:
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 untuk grep atau program lain untuk melewatkan kedua string sebagai syarat, tapi bukan itu intinya. Setiap program yang dapat mengembalikan benar atau salah, diberikan file sebagai argumen, dapat digunakan di sini - grep hanyalah contoh yang populer.
Dan catatan, Anda dapat mengikuti menemukan exec dengan perintah find lainnya, seperti ls atau -delete atau yang serupa. Catatan, penghapusan itu tidak hanya rm (menghapus file), tetapi rmdir (menghapus direktori) juga.
Rantai seperti itu dibaca sebagai kombinasi AND dari perintah, selama tidak ditentukan (dengan -or
switch) (dan parens (yang perlu ditutup-tutupi)))).
Jadi Anda tidak meninggalkan rantai penemuan, yang merupakan hal yang berguna. Saya tidak melihat adanya keuntungan dalam menggunakan -xargs, karena Anda harus berhati-hati dalam mengirimkan file, yang merupakan sesuatu yang tidak perlu dilakukan - itu secara otomatis menangani melewati setiap file sebagai argumen tunggal untuk Anda.
Jika Anda yakin perlu beberapa penyembunyian untuk menemukan {} kawat gigi , jangan ragu untuk mengunjungi pertanyaan saya yang meminta bukti. Penegasan saya adalah: Anda tidak.
find
. Terima kasih banyak!