Вы можете использовать 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
.