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

Категория | Требования, условные обозначения или используемая версия программного обеспечения |
---|---|
System | Любой дистрибутив Linux |
Программное обеспечение | N/A |
Other | Привилегированный доступ к вашей системе Linux как root или через sudo команда. |
Соглашения | # — требует, чтобы указанные команды Linux выполнялись с правами root привилегии либо напрямую как пользователь root, либо с помощью команды sudo $ — требует, чтобы указанные команды Linux выполнялись как обычный непривилегированный пользователь |
Искать файлы текстовой строки через командную строку
Подпишитесь на RSS и БЮЛЛЕТЕНЬ и получайте последние новости Linux, вакансии, советы по карьере и учебные пособия.
Для поиска файл (или файлы) для конкретной текстовой строки, единственная команда, которую вам нужно знать, — это grep
. И это достаточно легко освоить. Давайте начнем с работы с наиболее простыми формами команды, постепенно усложняясь.
Для поиска в файле текстовой строки используйте следующий синтаксис команды:
$ grep string filename
Например, давайте поищем в текстовом документе document.txt
строку «example».
$ grep, пример document.txt

Как видно на снимке экрана, grep
возвращает всю строку, содержащую слово » пример. «Если строка состоит из нескольких строк, то будут возвращены все эти строки.
Если вы хотите искать в нескольких файлах, просто добавьте к команде столько файлов, сколько захотите.
$ grep example document1.txt document2.txt
Вы также можете использовать подстановочные знаки в команде.
$ grep example document *

Вывод из grep
показывает нам, в каких файлах была найдена строка.
Для рекурсивного поиска используйте -r
с помощью grep
.
$ grep -r example

Как видите, grep
провел поиск в нескольких каталогах и указывает, где он нашел строку. Вы можете Также укажите каталог в своей команде, но если его пропустить (как мы сделали в этом примере), grep
будет выполнять поиск в каждом каталоге по текущему пути.
Здесь некоторые другие удобные параметры команды grep
, которые могут вам понадобиться при поиске текстовой строки:
-c
— подсчитать, сколько раз встречается строка.-i
— игнорировать регистр.-n
— показать номер строки, в которой была найдена строка.-o
— отображать только совпадающий текст (не возвращать всю строку).
С помощью grep
вы можете сделать гораздо больше. Ознакомьтесь с нашим руководством по grep для получения более подробной информации или посетите страницу руководства для получения дополнительных параметров командной строки.
$ man grep
Поиск текстовой строки в nano
Если у вас есть файл, открытый в nano, и вам нужно найти конкретную строку, нет необходимости выходить из файла и использовать для него grep
. Просто нажмите Ctrl + W
на клавиатуре, введите строку поиска и нажмите Enter
.

Поиск текстовой строки в vim
Текстовый редактор vim также имеет встроенный метод для поиска строки. Все, что вам нужно сделать, это ввести :/
, а затем строку поиска, а затем нажать Enter
.

Искать в файле текстовую строку через графический интерфейс
Для Linux доступно множество текстовых редакторов графического интерфейса. Различные дистрибутивы и среды рабочего стола имеют собственное программное обеспечение, поэтому невозможно написать руководство, которое охватит их все.. Однако, как правило, все они работают одинаково, поэтому мы все равно сможем вам помочь.
Подпишитесь на RSS и NEWSLETTER и получайте последние новости Linux, вакансии, советы по карьере и учебные пособия.
На нашем На тестовой машине Ubuntu мы запускаем GNOME и имеем доступ к текстовому редактору, известному как «текстовый редактор». Мы можем получить доступ к его функции поиска из меню, как показано на скриншоте ниже.

Заключение
Поиск файлов в Linux для текстовая строка — обычная задача, и с ней легко справиться. Команда grep
оказывается очень удобной и может быстро получить результаты. Если вы уже открыли файл в командной строке или редакторе графического интерфейса, там также доступны функции поиска. В этом руководстве вы узнали все, что вам нужно для поиска текстовой строки в одном или нескольких файлах в Linux.
Поиск строки во всех. txt файлы [дубликаты]
Есть ли способ найти строку test123
во всех текстовых файлах на жестком диске?
Вы можете использовать find
, чтобы получить все файлы .txt
, а затем grep
желаемая строка
$ find/-type f -name '* .txt' -exec grep 'test123' {} +
Где:
/
поиск по всему серверу.-type f
найти только файлы, а не каталоги-name '* .txt'
найти все.txt
files-exec grep 'test123'
поискtest123
во всех найденных файлах{}
заменяется текущим именем файла, обрабатываемым везде, где оно встречается в аргументах команды, а не только в аргументах, где оно указано. e+
он значительно улучшит время выполнения (поскольку он будет связывать аргументы перед выполнением до тех пор, пока)
Предполагая, что под «всеми текстовыми файлами» вы подразумеваете все файлы, заканчивающиеся на .txt:
find/-type f -name '* .txt' -exec grep -i 'test123' {} ;
или
find/-type f -name '* .txt' -exec grep -i 'test123' {} +
2
find/-type f -exec grep -I test123 {} +
Версия с +
вместо ;
намного быстрее, а -I
игнорирует двоичные файлы. Или просто используйте рекурсивный grep:
grep -Ir test123/
Вероятно, вы также захотите 2> /dev/null
, потому что будет много строк с «отказом в разрешении».
Что-то, что укажет вам правильное направление:
find/-type f -name * .txt
, чтобы найти все файлы .txt, при условии, что у вас только один жесткий диск. А затем просто используйте grep
для поиска в этих файлах.
2