Как найти текст или файл в Linux используя bash

Для поиска текста используем следующую команду:

grep -rnw ‘directory’ -e «pattern»

Пример:
$ grep -rnw ‘/var/www/’ -e «DOCTYPE html»

Если выводится слишко много  информации то можно добавить команду “less”
$ grep -rnw ‘/var/www/’ -e «DOCTYPE html» | less

Где:
-r      — рекурсивно
-n     — номер строки
-w    — соответствует целому слову

Наряду с этим, —exclude или —include параметр может быть использован для эффективного поиска. Что-то вроде этого:

grep —include=*.{c,h} -rnw ‘directory’ -e «pattern»

В этом случае, поиск будет только  по файлам, которые имеют .c или .h расширения.

Другие примеры:
$ grep —include=*.{php,html} -rnw ‘/var/www/’ -e «DOCTYPE html»
искать в .php и .html

$ grep —include=*.html -rnw ‘/var/www/’ -e «DOCTYPE html»
искать в .html

Аналогично использование команды —exclude:

Образец:
grep —exclude=*.o -rnw ‘directory’ -e «pattern»
Исключает из поиска все файлы с расширением .o

Кроме этого мы можем работать и с директориями:
grep —exclude-dir={dir1,dir2} -rnw ‘directory’ -e «pattern»
—exclude-dir   исключить каталог

$ grep —exclude-dir={html,html1} -rnw ‘/var/www/’ -e «DOCTYPE html»

Исключаем каталоги html, html1 и все файлы с расширением .t
$ grep —exclude-dir={html,html1} —exclude=*.t -rnw ‘/var/www/’ -e «DOCTYPE html»

Исключаем каталог html
$ grep —exclude-dir=html -rnw ‘/var/www/’ -e «DOCTYPE html»

Следующая команда find для поиска файлов:

find [directory] -name «Имя файла»

Примеры:
$ find /var/www/html1 -name *.txt

Найти все файлы изображений:
$ find /home/vlad ( ( -name *.[Jj][Pp][Ee][Gg] ) -or ( -name *.[Pp][Nn][Gg] ) -or ( -name *.[Bb][Mm][Pp] ) )

$ find /var/www/ -type f -name index.php     // -type f — для файлов

$ find /var/www/ -type d -name css              // -type d — для директорий

Автор: Vladimir Semenovich