Как исключить каталог в рекурсивном поиске, используя grep? - PullRequest
12 голосов
/ 18 ноября 2011

Как выполнить рекурсивный поиск с использованием grep, исключая конкретный каталог?

Справочная информация: у меня есть большой каталог, состоящий из файлов журналов, которые я хотел бы исключить при поиске.Самый простой способ - переместить папку журнала.К сожалению, я не могу этого сделать, так как проект определяет местоположение.

Есть идеи, как это сделать?

Ответы [ 2 ]

18 голосов
/ 18 ноября 2011

вы ищете это?

со страницы руководства grep:

--exclude-dir=DIR
            Exclude directories matching the pattern DIR from recursive searches.
0 голосов
/ 19 ноября 2011

В качестве альтернативы, если вы можете использовать find в своем поиске, это также может быть полезно: find [directory] -name "*.log" -prune -o -type f -print|grep ... На самом деле [directory] может быть текущим каталогом, если хотите (подойдет только .).

Следующая часть, -name "*.log" -prune - это все вместе.Он ищет имена файлов с шаблоном *.log и удаляет их из ваших результатов.

Далее идет -o (для "или")

Затем, -type f -print, который говорит "напечатать (в stdout) любой тип, являющийся файлом. "

Эти результаты должны включать все файлы (каталоги не возвращаются), найденные в [directory], за исключением тех, которые заканчиваются на .log.Тогда вы можете grep результаты, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...