Ви можете використовувати 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
.