Примечание: это не дубликат. Я имею в виду определенный случай, когда параметры grep для исключения путей / каталогов не ведут себя ожидаемым образом.
Я пытаюсь использовать grep для рекурсивного поиска в моей корневой файловой системе. Я пытаюсь исключить определенные каталоги, такие как /proc , /sys и /usr/local . Если я использую --exclude-dir=${DIR_NAME} , то он не будет искать пути ниже ${DIR_NAME} , но это также будет означать, что он откажется искать пути ниже ${DIR_NAME} если ${DIR_NAME} равен на уровне ниже текущего рабочего каталога. В качестве примера рассмотрим это дерево файловой системы:
${PWD}/
data/
settings/
sys/
users/
developer/
projects/
my_os/
build/
src/
apps/
sys/
Makefile
extras/
sys/
apps/
os/
Если я хочу, чтобы мой поиск исключал ${PWD}/sys и все, что под ним, grep -rl --exclude-dir=sys исключит его, но также исключит ${PWD}/data/settings/sys и ${PWD}/users/developer/projects/my_os/src/sys , две директории, которые я хочу включить в свой поиск.
Первоначально я надеялся, что --exclude-dir/--exclude будет разрешать регулярные выражения, и я нашел этот комментарий, указывающий, что они делают, но кажется, что синтаксис регулярных выражений не влияет на поведение утилиты (например, "^/(dev|proc)"). Я в порядке, если эти два параметра не используют регулярные выражения, но я не хочу, чтобы шаблон исключения применялся к отдельным компонентам пути. Есть ли способ заставить его работать так?
