Для поиска текста в файле существует команда grep. Её можно использовать для поиска файлов и папок с определёнными именем. Вы можете выполнить поиск строки внутри файлов благодаря *. Также вы можете осуществлять поиск файлов с определённым расширением *.php.
# показывает номер строки + саму строку
crontab -l | grep -n "Ivan"
# вы можете прочитать разом все файлы и сделать фильтр grep
cat * | grep 'текст для поиска'
# поиск по файлу с номером строки
grep -n 'if' create_script_comment.sh
# поиск строки
grep text file1.txt
# множественный поиск по всем файлам в папке
grep text *
# рекурсивный поиск по всем папкам внутри родительской папки
grep -R text *
# регистронезависимый и рекурсивный поиск
grep -Ri text *
# поиск слова, а не вхождения строки
grep -wR text *
# показывает количество вхождений
grep -nw text *
# поиск без названия файла.
# будет выводиться только найденный текст со всех файлов.
grep -h text *
# поиск в списке файлов
ls -i | grep -i text
Для удобства вы можете воспользоваться регулярными выражениями.
# если в строке есть числа 1 или 2 то вернется найденная строка.
# разделить | из одного условия делает два условия
echo 1111111111112 | grep '[1]|[2]'
# если в строке есть 3 и 4, то вернётся найденная строка, расположение чисел не важно
echo 11111111111112234 | grep '[34]'
# если строка из 4 символов, то вернётся найденная строка
echo 1111 | grep '[0-9]\{4\}'
# если строка из содержимое файла совпадает с read или reed,
# то вернётся найденная строка или строки
egrep 're(a|e)d' file.txt
# если в файле есть строка 3 - test или 4 - test, то вернётся найденная строка
egrep '(3|4) - test' f3.txt
# выводит совпадения
egrep "SELECT" *
# выводит номер строки в котором было совпадение
egrep -b "SELECT" *
# поиск по целому слову
egrep -w "SELECT" *
# если в файле есть строка с числом, то вернётся найденная строка
grep [[:digit:]] f3
Столкнулся с одной проблемой. Мне нужно было искать сразу несколько элементов. Для этих целей у grep есть разделитель |. Можно создать несколько условий для поиска.
grep "выражение1\|выражение2" file
grep -e "выражение1|выражение2" file
grep -e выражение1 -e выражение2 file
egrep "выражение1|выражение2" file
Столкнулся с определённой проблемой. Был большой файл и редактор notepad++ не позволял его редактировать. Мне нужно было очистить файл от лишних данных. Выбирать данные кусками - это кропотливое занятие. Ключ -v позволяет исключить данные в которых найдена заданная строка. Процесс исключения данных называют инверсией.
# вывести все данные на экран, кроме тех, в которых есть определённая строка
cat file.txt | grep -v search_string
Вы можете вывести содержимое файла без закомментированных строк при помощи выражения ^#. Это удобно! Многие файлы в линукс закомментированы.
# вывести все данные на экран, кроме закомментированных строк
cat ./file.txt | grep -v '^#'
Можно очистить вывод содержимого файла от пустых строк при помощи выражения ^$. Если вам нужно подсчитать количество строк в файле, то удалите пустые строки.
# вывести все данные на экран, кроме пустых строк
cat ./file.txt | grep -v '^$'
Вы можете разукрасить вывод данных на экране. Ключ --color изменит вывод данных. Например, у меня название файла отображается фиолетовым цветом. Найденная строка подсвечивается красным цветом. Все остальные строки белого цвета. Это очень удобно.
#разукрашивание вывода
grep -v --color search_string
Для поиска помимо команды grep еще существует команда find. Читайте статью Как найти файлы по расширению размеру дате find BASH