2016-07-25 2 views
0

Я являюсь активным пользователем команды поиска, аналогичный приведенному ниже формату:Unix найти каталог командной подсказки

find . -name '*servername*' -exec zgrep -l 'identifier' {} \; 

Предположим, что у меня есть намек, что целевой файл может находиться в директории с именем аЬс, является возможным в команде find или любой из ее комбинаций принять подсказки?

Например, если поиск в результатах поиска выполняется в подкаталогах с именем abc, есть больше шансов найти результаты, и я могу разорвать операцию поиска, если это необходимо.

Я ищу какую-то подобную команду:

find --hint dir1|pattern1 . -name '*servername*' -exec zgrep -l 'identifier' {} \; 
+0

@ krzyk К сожалению, у меня нет фиксированной структуры каталогов. Этот подкаталог может быть на любом вложенном уровне, и это не всегда относится к имени каталога, которое требуется для поиска в имени файла. Например, сначала я ищу файлы ssl или файлы доступа, затем я ищу детали. – amitmah

+0

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

+0

я остановлюсь после нескольких матчей – amitmah

ответ

1

Возможно, это то, что вы хочу:

find $(find . -type d -name abc 
    ) -name '*servername*' -exec zgrep -l 'identifier' {} + 

Демо:

$ mkdir /tmp/demo 
$ cd /tmp/demo 
$ mkdir -p a/b/abc 
$ echo identifier | gzip > a/b/abc/one_servername.gz 
$ find $(find . -type d -name abc 
     ) -name '*servername*'-exec zgrep -l 'identifier' {} + 
./a/b/abc/one_servername.gz 
+0

спасибо это выглядит хорошо, дайте мне попробовать, если он не работает – amitmah

+0

Нет это не сработало Это то, что я получил: находки: пути должны предшествовать выражение: -exec Использования: найти [- H] [-L] [-P] [-Olevel] [-D help | tree | search | stat | rates | opt | exec] [path ...] [выражение] – amitmah

+0

Это означает, что нет подкаталогов с именем 'abc 'поэтому подсказка неверна. – jlliagre

0

Вы можете использовать несколько каталоги поиска находки, он будет выглядеть в них в порядке, предусмотренный:

find dir1 dir2 dir3 -name '*servername*' -exec zgrep -l 'identifier' {} \; 
Смежные вопросы