Також є:
find directory_name -type f -print0 | xargs -0 grep -li word
але це може бути трохи для початківця.
find
є прогулянкою / лістером загального призначення, -type f
означає "шукати звичайні файли, а не каталоги та іменовані труби та що у вас є", -print0
означає "друкувати їх на стандартному виході, використовуючи нульові символи як роздільники". Вихід з даних find
надсилається до, xargs -0
і він захоплює його стандартний вхід фрагментами (щоб уникнути обмежень довжини командного рядка), використовуючи нульові символи як роздільник записів (а не стандартний новий рядок) і застосовується grep -li word
до кожного набору файлів. На grep
, -l
означає "список файлів, які відповідають" і -i
означає "нечутливі до регістру"; зазвичай ви можете комбінувати варіанти одного символу, тому ви побачите -li
їх частіше -l -i
.
Якщо ви не використовуєте, -print0
і -0
тоді у вас виникнуть проблеми з іменами файлів, які містять пробіли, тому їх використання є доброю звичкою.
*
? Це або призведе до розширення шаблону підстановки (якщо є назви файлів, що відповідають шаблону підстановки), або grep сприйме це як оператор повторення 0 або більше для символу, що передує*
.