Бывает так, что необходимо найти подстроки только в файлах с определённым расширением и типом. Или в файлах содержащих определённые символы в названии. Мы конечно можем использовать команду grep -r ‘подстрока’ и перелопатить всё на сервере в поисках данной подстроки, но это не практично и нагружает сервер по полной. Например нам нужно найти все файлы, где устанавливается глобальная переменная mysql long_query_time. Мы выполняем:
grep -r 'long_query_time'
И видим совершенное непотребство:
Абсолютный трэш, сервер грузится на соточку и находится не совсем то, что нужно. Мы конечно можем отфильтровать этот поток ещё одним grep, однако от лишней нагрузки не уйти. Но, мы знаем, что нам нужны лишь файлы с расширением .cnf, поэтому сначала командой find найдем все файлы с данным расширением, передадим поток xargs и применим grep для каждого пути:
find . -name "*.cnf" | xargs grep -n long_query_time
Прогресс на лицо. Нашлось только требуемое и только в нужных нам файлах. Потренируемся ещё, найдём на сервере .php файлы в которых применяется функция phpinfo()
find . -name "*.php" | xargs grep -n 'phpinfo();'
Прекрасные результаты! А главное — быстро и недорого. Теперь немножко добавим регулярочку и найдём в html файлах на сервере все строки содержащие слова warning и developer
find . -name "*.html" | xargs grep -n -e "warning.*developer"
Вот так просто и быстро находить всё необходимое в linux. Ничего не пропустишь.