xargs mengharapkan input dalam format yang tidak dihasilkan oleh perintah lain, sehingga sulit untuk digunakan secara efektif. Apa yang salah di sini adalah Anda memiliki file yang namanya harus dikutip pada input ke xargs (mungkin berisi ' ).
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 mendapatkan efek yang sama seperti xargs , kecuali tanpa batasan pada nama file. Versi find yang cukup baru memungkinkan Anda mengelompokkan beberapa file dalam satu panggilan ke perintah tambahan. Meneruskan /dev/null ke grep memastikan bahwa itu akan menampilkan nama file di depan setiap kecocokan, meskipun kebetulan dipanggil pada satu file.
find . -type f -exec grep word /dev/null {} +
Versi find yang lebih lama (pada sistem lama atau OpenBSD, atau utilitas yang dikurangi seperti BusyBox) hanya dapat memanggil perintah tambahan pada satu file dalam 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 diperlukan kutipan. Saat ini, hanya OpenBSD yang memiliki fitur ini tanpa memiliki -exec … {} + .
find . -type f -print0 | xargs -0 grep word /dev/null
Saya kira maksud Anda opsi pertama
grep rekursif, untuk mencari konten di dalam file
grep -R "content_to_search" /path/to/directory
ls rekursif, untuk mencari file yang cocok
ls -lR | grep "your_search"
Jika Anda memiliki alat GNU (yang Anda lakukan jika tag Linux akurat) maka Anda dapat menggunakan -print0 dan -0 untuk mengatasi masalah kutipan biasa:
find . -type f -print0 | xargs -0 grep word