Как найти строку или текст в файле в Linux

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

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

В этом руководстве вы узнаете:

  • Как искать файлы по текстовой строке с помощью командной строки
  • Как искать файлы по текстовой строке с помощью текстовые редакторы командной строки
  • Как искать в файле текстовую строку с помощью текстовых редакторов GUI
Поиск текстовой строки в файле в Linux
Требования к программному обеспечению и условные обозначения командной строки Linux
Категория Требования, условные обозначения или используемая версия программного обеспечения
System Любой дистрибутив Linux
Программное обеспечение N/A
Other Привилегированный доступ к вашей системе Linux как root или через sudo команда.
Соглашения # — требует, чтобы указанные команды Linux выполнялись с правами root привилегии либо напрямую как пользователь root, либо с помощью команды sudo $ — требует, чтобы указанные команды Linux выполнялись как обычный непривилегированный пользователь

Искать файлы текстовой строки через командную строку


ПОДПИСАТЬСЯ НА НОВОСТИ И RSS
Подпишитесь на RSS и БЮЛЛЕТЕНЬ и получайте последние новости Linux, вакансии, советы по карьере и учебные пособия.


Для поиска файл (или файлы) для конкретной текстовой строки, единственная команда, которую вам нужно знать, — это grep . И это достаточно легко освоить. Давайте начнем с работы с наиболее простыми формами команды, постепенно усложняясь.

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

 $ grep string filename 

Например, давайте поищем в текстовом документе document.txt строку «example».

 $ grep, пример document.txt 

Поиск файла для текстовой строки с помощью grep

Как видно на снимке экрана, grep возвращает всю строку, содержащую слово » пример. «Если строка состоит из нескольких строк, то будут возвращены все эти строки.

Если вы хотите искать в нескольких файлах, просто добавьте к команде столько файлов, сколько захотите.

 $ grep example document1.txt document2.txt 

Вы также можете использовать подстановочные знаки в команде.

 $ grep example document *  

Поиск в нескольких файлах текстовой строки с помощью grep


Вывод из grep показывает нам, в каких файлах была найдена строка.

Для рекурсивного поиска используйте -r с помощью grep .

 $ grep -r example 

Рекурсивный поиск текстовой строки с помощью grep

Как видите, grep провел поиск в нескольких каталогах и указывает, где он нашел строку. Вы можете Также укажите каталог в своей команде, но если его пропустить (как мы сделали в этом примере), grep будет выполнять поиск в каждом каталоге по текущему пути.

Здесь некоторые другие удобные параметры команды grep , которые могут вам понадобиться при поиске текстовой строки:

  • -c — подсчитать, сколько раз встречается строка.
  • -i — игнорировать регистр.
  • -n — показать номер строки, в которой была найдена строка.
  • -o — отображать только совпадающий текст (не возвращать всю строку).

С помощью grep вы можете сделать гораздо больше. Ознакомьтесь с нашим руководством по grep для получения более подробной информации или посетите страницу руководства для получения дополнительных параметров командной строки.

 $ man grep 

Поиск текстовой строки в nano

Если у вас есть файл, открытый в nano, и вам нужно найти конкретную строку, нет необходимости выходить из файла и использовать для него grep . Просто нажмите Ctrl + W на клавиатуре, введите строку поиска и нажмите Enter .



Поиск текстовой строки в nano

Поиск текстовой строки в vim

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

Поиск текстовой строки в vim

Искать в файле текстовую строку через графический интерфейс

Для Linux доступно множество текстовых редакторов графического интерфейса. Различные дистрибутивы и среды рабочего стола имеют собственное программное обеспечение, поэтому невозможно написать руководство, которое охватит их все.. Однако, как правило, все они работают одинаково, поэтому мы все равно сможем вам помочь.


ПОДПИСАТЬСЯ НА НОВОСТИ И RSS
Подпишитесь на 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

Оцените статью
clickpad.ru
Добавить комментарий