Зачастую возникает необходимость найти определенную текстовую строку среди тысяч файдов, заполняющих файловую систему Linux сервера.
К сожалению, команда find не осуществляет поиск фрагментов текста в текстовых файлах.Поэтому для решения задачи поиска текстовой строки следует использовать команду grep. grep ищет заданную текстовую строку в файлах, расположенных в заданном каталоге.
Cинтаксис команды grep
grep “text string 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
Вывод:…
filename.txt: redeem reward ...
В некторых других версиях линукса может потребоваться использование опции -H:
$ grep -H -r “redeem reward” /home/tom
Для того, чтобы на экране появились только имена файлов используйте:
$ grep -H «xxx» /etc/* -R | cut -d: -f1
Вывод:
... filename.txt ...