Часто используйте это:
grep
может использоваться вместе с -r
(рекурсивным), i
(игнорировать регистр) и -o
(печатает только совпадающую часть строк). Чтобы исключить files
использование --exclude
и исключить использование каталогов --exclude-dir
.
Собрав все вместе, вы получите что-то вроде:
grep -rio --exclude={filenames comma separated} \
--exclude-dir={directory names comma separated} <search term> <location>
Описание этого звучит намного сложнее, чем есть на самом деле. Проще проиллюстрировать на простом примере.
Пример:
Предположим, я ищу текущий проект для всех мест, где я явно установил строковое значение debugger
во время сеанса отладки, и теперь хочу просмотреть / удалить.
Я пишу сценарий с именем findDebugger.sh
и использую, grep
чтобы найти все вхождения. Однако:
Для файловых исключений - я хочу убедиться, что .eslintrc
это игнорируется (на самом деле это правило linting, debugger
поэтому его следует исключить). Кроме того, я не хочу, чтобы мой собственный сценарий упоминался в каких-либо результатах.
Для исключений из каталогов - я хочу исключить, так node_modules
как он содержит много библиотек, на которые есть ссылки, debugger
и меня не интересуют эти результаты. Кроме того, я просто хочу опустить .idea
и .git
скрытые каталоги, потому что меня не волнуют эти места поиска, и я хочу сохранить результативность поиска.
Итак, вот результат - я создаю скрипт findDebugger.sh
с именем :
#!/usr/bin/env bash
grep -rio --exclude={.eslintrc,findDebugger.sh} \
--exclude-dir={node_modules,.idea,.git} debugger .