Иногда нужно найти файлы, содержащие определенный текст. В современный системах для рабочих станций вовсю используются утилиты из разряда Desctop Search, которые индексируют все документы и затем предоставляют возможность быстро найти искомый файл. В Linux сервере для этого можно использовать команду grep.
Содержание
grep “text string” directory
При выполнении данной команды grep будет искать строку text string во всех файлах в директории directory
$ grep "redeem reward" /home/tom/*.txt
grep позволяет искать в подкаталогах, используя опцию -r:
$ grep -r "redeem reward" /home/tom
Чтобы grep вывела имена найденных файлов, стоит использовать опцию -H.
sudo grep -Hr pure-ftpd /etc/
Вывод:
... /etc/rc2.d/S20pure-ftpd:# Provides: pure-ftpd /etc/rc2.d/S20pure-ftpd:# pure-ftpd starts and stops the pure-ftpd ftp daemon /etc/rc2.d/S20pure-ftpd:NAME=pure-ftpd /etc/rc2.d/S20pure-ftpd:WRAPPER=/usr/sbin/pure-ftpd-wrapper /etc/rc2.d/S20pure-ftpd:PIDFILE=/var/run/pure-ftpd/pure-ftpd.pid /etc/rc2.d/S20pure-ftpd:SUFFIX=`basename $ME | sed -ne 's/^pure-ftpd-\(.*\)/\1/p'` /etc/rc2.d/S20pure-ftpd: DAEMON=/usr/sbin/pure-ftpd-$SUFFIX ...
Теперь нужно прогнать вывод через фильтр, чтобы оставить только имена файлов, в которых есть вхождение текста, а также удалить дубликаты. Нужно использовать такую команду:
sudo grep -Hr pure-ftpd /etc/ | cut -d: -f1 | sort -u
Вывод:
grep: /etc/blkid.tab: No such file or directory /etc/default/pure-ftpd-common /etc/ftpallow /etc/init.d/pure-ftpd /etc/logrotate.d/pure-ftpd-common /etc/pam.d/pure-ftpd /etc/pure-ftpd/conf/AltLog /etc/pure-ftpd/conf/PureDB /etc/rc0.d/K20pure-ftpd /etc/rc1.d/K20pure-ftpd /etc/rc2.d/S20pure-ftpd /etc/rc3.d/S20pure-ftpd /etc/rc4.d/S20pure-ftpd /etc/rc5.d/S20pure-ftpd /etc/rc6.d/K20pure-ftpd
Источник: http://itman.in/linux-grep-find-text/
admin 22 июня, 2017
Posted In: Linux