Часто користуйтеся цим:
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
його ігнорують (це насправді має правило зв’язування, 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 .