fewit.ru :: Заметки недоайтишника

Ещё один криворукий админ

Иногда нужно найти файлы, содержащие определенный текст. В современный системах для рабочих станций вовсю используются утилиты из разряда Desctop Search, которые индексируют все документы и затем предоставляют возможность быстро найти искомый файл. В Linux сервере для этого можно использовать команду grep.

Используем grep для поиска текста

grep “text string” directory

При выполнении данной команды grep будет искать строку text string во всех файлах в директории directory

Примеры использования grep

$ grep "redeem reward" /home/tom/*.txt

Как найти текст во всех подкаталогах

grep позволяет искать в подкаталогах, используя опцию -r:

$ grep -r "redeem reward" /home/tom

Вывести только имена найденных grep файлов

Чтобы 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/

22 июня, 2017

Posted In: Linux