Поиск в файлах linux

Поиск в файлах linux

Когда требуется найти одну запись в множестве лог файлов поможет конвейер следующего вида:

 find /path/to/log_folder -name 'FileNamePattern*' -mtime -2 -type f |xargs grep -En 'SearchWord'

Как это работает:

find

find /path/to/log_folder -name 'FileNamePattern*' -mtime -2 -type f 

На выходе получаем список полных путей всех файлов, которые соответствуют маске

параметр Описание
/path/to/log_folder
 путь до папки, в которой ищем
-name 'FileNamePattern*' 

паттерн название файлов 

например, в папке /var/log/ можно делать поиск только по boot.log.* игнорируя все остальные данные

-mtime -2
файлы не старше двух дней
-type f 
тип - только файлы, игнорируем каталоги и другие значения

 

xargs

Далее конвейером передаем вывод результатов на xargs.

xargs подставляет все пареметры полученные через конвейер в конец строки, в нашем случае это grep.

Команда grep в конце принимает имя файла внутри которого нужно осуществлять поиск.

 

grep

grep <params> <SearchWord> <Patch>

Заметка: grep не ищет многострочные выражения, для многострочного поиска следует использовать sed 

Опция Описание
-E

использовать Regex

Варианты:

-E = полный regex

-F = образцы строк, без regex. (grep -F <params> аналогично fgrep <params>)

по умолчанию упрощенный regex

-n показывать номера строк

 

Похожие статьи

Полезные команды Linux

Полезные команды Linux

Файловая система Linux

Файловая система Linux

Дисклеймер

Данный ресурс является персональной базой знаний автора и носит исключительно ознакомительный характер.

Автор не несет ответственности за возможные последствия от частичного или полного воспроизведения информации с сайта

Все действия описанные на данном сайте Вы на делаете на свой страх и риск.