Часто используйте это:
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 .