perlu mencari sesuatu di seluruh konten
Aku sedang mencoba:
find . | xargs grep word
Saya mendapatkan kesalahan:
xargs: kutipan yang tidak ditentukan
Bagaimana cara mencapai ini?
xargs
mengharapkan input dalam format yang tidak dihasilkan perintah lain, sehingga sulit digunakan secara efektif. Apa yang salah di sini adalah bahwa Anda memiliki file yang namanya harus dikutip pada input xargs
(mungkin mengandung a '
).
Jika grep Anda mendukung -r
atau -R
opsi untuk pencarian rekursif, gunakan itu.
grep -r word .
Jika tidak, gunakan -exec
primer dari find
. Ini adalah cara biasa untuk mencapai efek yang sama seperti xargs
, kecuali tanpa batasan pada nama file. Versi terbaru yang wajar find
memungkinkan Anda untuk mengelompokkan beberapa file dalam satu panggilan ke perintah tambahan. Lulus /dev/null
untuk grep
memastikan bahwa itu akan menampilkan nama file di depan setiap pertandingan, bahkan jika itu dipanggil pada satu file.
find . -type f -exec grep word /dev/null {} +
Versi find
yang lebih lama (pada sistem yang lebih lama atau OpenBSD, atau utilitas yang dikurangi seperti BusyBox) hanya dapat memanggil perintah tambahan pada satu file pada satu waktu.
find . -type f -exec grep word /dev/null {} \;
Beberapa versi find
dan xargs
memiliki ekstensi yang memungkinkan mereka berkomunikasi dengan benar, menggunakan karakter nol untuk memisahkan nama file sehingga tidak perlu mengutip. Saat ini, hanya OpenBSD yang memiliki fitur ini tanpa memiliki -exec … {} +
.
find . -type f -print0 | xargs -0 grep word /dev/null
/dev/null
. Ini adalah gangguan ketika format output dapat bervariasi, tergantung pada berapa banyak file yang cocok ... terima kasih.Saya kira Anda maksud opsi pertama
grep rekursif, untuk mencari konten di dalam file
Itu rekursif, untuk mencari file yang cocok
sumber
Jika Anda memiliki alat GNU (yang Anda lakukan jika tag Linux akurat) maka Anda dapat menggunakan
-print0
dan-0
untuk mengatasi masalah mengutip yang biasa:sumber
Ada juga ACK , ini dirancang untuk melewati direktori khusus seperti
.svn
,.git
dan semacamnya. Ini adalah alat harian untuk pengembang.Cukup dekat dengan grep untuk switch umum.
Ex. :
Paket
ack-grep
pada suka debian & debian.sumber
Di direktori saat ini Anda dapat menggunakan grep:
sumber
Saya pikir Anda ingin menemukan string dalam file
Mencoba
find . -name "*" | xargs grep -l "string"
sumber