2

У меня есть папка со смесью заархивированных и разархивированных файлов журнала, которые я хочу искать.

Я могу искать без молнии с

grep -r "my-search-string" /path/to/folder

и искать в заархивированных файлах с

find /path/to/folder -name "*.gz" -exec zcat "{}" + | grep "my-search-string"

Есть ли одна строка, которую я могу использовать для поиска всех заархивированных и разархивированных файлов в /path/to/folder ?

спасибо Макс

2 ответа2

4

zgrep твой друг!

   Zgrep  invokes grep on compressed or gzipped files.  All options speci‐
   fied are passed directly to grep.  If no file is  specified,  then  the
   standard input is decompressed if necessary and fed to grep.  Otherwise
   the given files are uncompressed if necessary and fed to grep.

Я только что заметил, что в некоторых версиях zgrep нет опции -r. В этом случае вы можете использовать шаблон поиска для перехвата всех файлов и использовать zgrep вместо grep, например:

находить . -type f -exec zgrep 'моя строка поиска' "{}" \;

1

Экспортируйте несколько полезных переменных для my-search-string и path, затем выполните поиск:

SEARCH='my-search-string' ; SEARCHPATH='/path/to/folder' ; grep -r "$SEARCH" $SEARCHPATH && find $SEARCHPATH -name "*.gz" -exec zcat "{}" + | grep "$SEARCH"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .