Ви можете використовувати grepінструмент для рекурсивного пошуку поточної папки з -rпараметром, наприклад:
grep -r "pattern" .
Примітка: -r- Рекурсивно шукати підкаталоги.
Для пошуку в певних файлах ви можете використовувати синтаксис глобалізації, такий як:
grep "class foo" **/*.c
Примітка: Використовуючи параметр globbing ( **), він сканує всі файли рекурсивно з певним розширенням або шаблоном. Щоб включити цей синтаксис, виконайте наступну команду: shopt -s globstar. Ви також можете використовувати **/*.*для всіх файлів (крім прихованого та без розширення) або будь-якого іншого шаблону.
Якщо ви маєте помилку, що ваш аргумент занадто довгий, подумайте про звуження пошуку або findзамість цього використовуйте синтаксис, наприклад:
find . -name "*.php" -execdir grep -nH --color=auto foo {} ';'
Альтернативно використовувати ripgrep.
Якщо ви працюєте над більшими проектами або великими файлами, вам слід використовувати ripgrep:
rg "pattern" .
Ознайомтеся з документами, етапами встановлення або вихідним кодом на сторінці проекту GitHub .
Це набагато швидше , ніж будь-який інший інструмент , як GNU / BSD grep , ucg, ag, sift, ack, ptабо подібного, так як він побудований на вершині регулярних виразів Руста , який використовує кінцеві автомати, SIMD і агресивні літерні оптимізації , щоб зробити пошук дуже швидко.
Він підтримує шаблони ігнорування, вказані у .gitignoreфайлах, тому один шлях до файлу може бути узгоджений з кількома глобальними шаблонами одночасно.
Ви можете використовувати загальні параметри, такі як:
-i - Нечутливий пошук.
-I - Ігноруйте двійкові файли.
-w - Пошук цілих слів (на противагу частковому зіставленню слів).
-n - Покажіть рядок вашої відповідності.
-C/ --context(наприклад -C5) - збільшує контекст, тому ви бачите навколишній код.
--color=auto - Позначте відповідний текст.
-H - Відображає ім'я файлу, де знаходиться текст.
-c- Відображає кількість відповідних ліній. Можна комбінувати з -H.