Поиск файлов, содержащих определенную текстовую строку на сервере Linux

tuxlinuxdistrosЗачастую возникает необходимость найти определенную текстовую строку среди тысяч файдов, заполняющих файловую систему Linux сервера.

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

Cинтаксис команды grep

grep “ to search” directory-path

Примеры

В качестве примера рассмотрим задачу поиска строки redeem reward во всех текстовых файлах, расположенных в папке /home/tom/*.txt

$ grep «redeem reward» /home/tom/*.txt

Рекурсивный поиск

Вы можете искать нужную текстовую строку во всех поддиректориях, используя опцию -r:

$ grep -r «redeem reward» /home/tom

Фоматирование вывода

В Ubuntu команда grep по умолчанию выводит имя файла и фрагмент текста, соответствующих строке поиска:

$ grep -r “redeem reward” /home/tom

Вывод:...

.txt: redeem reward
...

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

$ grep -H -r “redeem reward” /home/tom

Для того, чтобы на экране появились только имена файлов используйте:

$ grep -H «xxx» /etc/* -R | cut -d: -f1

Вывод:

...
filename.txt
...

Запись навигация

Top