Grep поиск текста в файлах windows

Обновлено: 05.07.2024

в Windows я бы сделал поиск для поиска слова внутри папки. Аналогично, я хочу знать, встречается ли определенное слово внутри каталога, содержащего множество подкаталогов и файлов. Мои поиски синтаксиса grep показывают, что я должен указать имя файла, т. е. grep string filename .

теперь, я не знаю имя, и что мне делать? Друг предложил сделать grep -nr string , но я не знаю, что это значит, и у меня нет результатов (нет ответа, пока я не выдам сочетания клавиш Ctrl + c ).

точка в конце ищет текущий каталог. Значение для каждого параметра:

grep -nr 'MobileAppSer*' . (хотел найти MobileAppServlet.java или MobileAppServlet.class или MobileAppServlet.txt ; 'MobileAppASer*.*' другой способ сделать то же самое.)

для проверки дополнительных параметров используйте человек грэп.

grep -nr string my_directory

дополнительные примечания: это удовлетворяет синтаксису grep [options] string filename потому что в Unix-подобных системах каталог является своего рода файлом (есть термин "обычный файл", чтобы конкретно ссылаться на объекты, которые называются просто "файлами" в Windows).

grep -nr string читает содержимое для поиска из стандартного ввода, поэтому он просто ждет там ввода от вас и перестает делать это при нажатии ^C (он также остановится на ^D, что является комбинацией клавиш для конец файла.)

: Глобальное Регулярное Выражение Print/Parser/Processor/Program.
Это можно использовать для поиска в текущем каталоге.
Вы можете указать-R для "рекурсивного", что означает, что программа ищет во всех подпапках и их подпапках, а также подпапках их подпапок и т. д.

-n напечатает номер строки, где он соответствует в файле.
-i будет искать без учета регистра (капитал / не капитал письма.)

но это может быть немного много для новичка.

find является каталог общего назначения walker / lister, -type f означает "ищите простые файлы, а не каталоги и именованные каналы и что у вас есть", -print0 означает "печатать их на стандартном выходе с использованием нулевых символов в качестве разделителей". Вывод из find отправлено xargs -0 и это захватывает его стандартный ввод кусками (чтобы избежать ограничений длины командной строки), используя нулевые символы в качестве разделителя записей (а не стандартной новой строки) и applies grep -li word для каждого набора файлов. На grep , -l означает "список файлов, которые соответствуют" и -i означает "без учета регистра"; вы обычно можете комбинировать параметры одного символа, чтобы вы видели -li чаще, чем -l -i .

если вы не используете -print0 и -0 затем вы столкнетесь с проблемами с именами файлов, которые содержат пробелы, поэтому их использование является хорошей привычкой.

будет делать рекурсивный (то есть каталог и все его подкаталоги) поиск search_string. (как правильно ответил уста).

причина, по которой вы не получали anwers с предложением вашего друга:

потому что каталог не был указан. Если вы находитесь в каталоге, в котором вы хотите выполнить поиск, вы должны сделать следующее:

важно включить '.- характер, как видно из этого. grep для поиска в этом каталоге.

  1. grep -r "yourstring" * Найдет "yourstring" в любых файлах и папках

теперь, если вы хотите искать две разные строки одновременно, вы всегда можете использовать опцию E и добавлять слова для поиска. пример после перерыва

  1. grep -rE "yourstring|yourotherstring|$" * будет искать список мест, где yourstring или yourotherstring игр

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

- тип f возвращает вам только файлы, а не папки

- exec и <> запускает grep для файлов, которые были найдены в поиске (точный синтаксис- " - exec command <>").

почему бы не выполнить рекурсивный поиск, чтобы найти все экземпляры в подкаталогах:

это работает как шарм.

ответ выбран хорошо, и это работает, но это не правильный способ сделать это, потому что:

это фактически ищет строку "yourStrin" и "g" 0 или много раз.

таким образом, правильный способ сделать это:

эта команда выполняет поиск строки с любым символом до и после в текущей папке.

подобно ответу, опубликованному @eLRuLL, более простой способ указать поиск, который уважает границы слов, - использовать :


Мощь регулярных выражений в сочетании с поддерживаемыми опциями в grep делает это возможным.

Синтаксис команды

Grep ожидает шаблон и необязательные аргументы вместе со списком файлов, если они используются без конвейера.

1. Поиск в нескольких файлах

Grep позволяет искать заданный шаблон не только в одном, но и в нескольких файлах с помощью масок (например, знака «*»):

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

2. Поиск без учета регистра

G rep предлагает искать паттерн, не глядя на его регистр. Используйте флаг -i, чтобы утилита игнорировала регистр:

3. Поиск всего слова

Зачастую вместо частичного совпадения необходимо полное соответствие поисковому слову. Это можно сделать, используя флаг -w:

4. Проверка количества совпадений

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

5. Поиск в подкаталогах

Часто требуется выполнить поиск файлов не только в текущем рабочем каталоге, но и в подкаталогах. G rep позволяет это сделать с помощью флага -r:

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

6. Инверсивный поиск

Если вы хотите найти что-то несоответствующее заданному шаблону, grep и это умеет при помощи флага -v:

Можно сравнить вывод команды grep по одному и тому же шаблону и файлу с флагом -v или без него. С флагом печатается каждая строка, которая не соответствует шаблону.

7. Печать номеров строк

Если хотите напечатать номера найденных строк, чтобы узнать их позицию в файле, используйте опцию -n:

8. Ограниченный вывод

Для больших файлов вывод может быть огромным и тогда вам понадобится фиксированное количество строк вместо всей простыни. Можно использовать -m[num]:

Обратите внимание, как использование флага влияет на вывод для того же набора условий:

9. Отображение дополнительных строк

Иногда необходимо вывести не только строки по некоторому шаблону, но и дополнительные строки выше или ниже найденных для понимания контекста. Можно напечатать строку выше, ниже или оба варианта, используя флаги -A, -B или -C со значением num (количество дополнительных строк, которые будут напечатаны). Это применимо ко всем совпадениям, которые grep находит в указанном файле или в списке файлов.

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

  • с флагом -A1 выведется 1 строка, следующая за основной;
  • -B1 напечатает 1 строку перед основной;
  • -C1 выведет по одной строке снизу и сверху.

10. Список имен файлов

Чтобы напечатать только имя файлов, в которых найден шаблон, используйте флаг -l:

11. Точный вывод строк

Если необходимо напечатать строки, которые точно соответствуют заданному шаблону, а не какой-то его части, применяйте в команде ключ -x:

В приведенном ниже примере file.txt содержится слово «support», а строки без точного совпадения игнорируются.

12. Совпадение по началу строки

Используя регулярные выражения, можно найти начало строки:

Обратите внимание, как использование символа «^» изменяет выходные данные. Знак «^» указывает начало строки, т.е. ^It соответствует любой строке, начинающейся со слова It. Заключение в кавычки может помочь, когда шаблон содержит пробелы и т. д.

13. Совпадение по концу строки

Эта полезная регулярка способна помочь найти по шаблону конец строки:

Обратите внимание, как меняется вывод, когда мы сопоставляем символ «.» и когда используем «$», чтобы сообщить утилите о строках, заканчивающихся на «.» (без тех, которые могут содержать символ посередине).

14. Файл шаблонов

Если у вас есть некий список часто используемых шаблонов, укажите его в файле и используйте флаг -f. Файл должен содержать по одному шаблону на строку.

В примере мы создали файл шаблонов pattern.txt с таким содержанием:

Чтобы это использовать, применяйте ключ -f:

15. Указание нескольких шаблонов

G rep позволяет указать несколько шаблонов с помощью -e:

16. Расширенные выражения

G rep поддерживает расширенные регулярные выражения или ERE (похожие на egrep) с использованием флага -E.

Использование ERE имеет преимущество, когда вы хотите рассматривать мета-символы как есть и не хотите заменять их строками. Использование -E с grep эквивалентно команде egrep.

Заключение

Приведенные выше примеры – лишь верхушка айсберга. G rep поддерживает целый ряд опций и может оказаться полезным инструментом в руках специалиста, который способен эффективно его использовать. Мы можем не только взять на вооружение приведенные выше примеры, но и комбинировать их, чтобы получить требуемый результат в различных условиях.

Для дальнейшего изучения утилиты и расширения кругозора стоит почитать мануал, выполнив в терминале команду man grep, или посетить страницу с официальной документацией .

Команда grep

Практически любой, у кого есть компьютер или кто с ним работает, знает сочетание клавиш Ctrl + F для поиска текста. Буква «F» означает «Найти», «найти» на английском языке и может использоваться, например, для поиска текста на веб-странице. Этот ярлык также доступен во многих приложениях, есть программы, которые используют букву «B» для поиска, но эти ярлыки работают, только если мы находимся внутри приложения и с открытым файлом. В Linux у нас есть очень мощные инструменты, которые мы можем запускать из Терминала и, если захотим, найдем любой текст, который есть в нашей команде, воспользуемся командой GREP.

GREP Это команда, которая поможет нам найти текст в указанном нами файле. Его название происходит от g / re / p, команды, которая работает для чего-то подобного в текстовом редакторе Unix / Linux. Как и многие другие команды, GREP Имеет много доступные варианты, которые мы добавим в виде букв и каждый будет служить своей задаче. Объединив эти параметры, мы сможем выполнять сложный поиск в одном или нескольких файлах. Здесь мы покажем вам все, что вам нужно знать.

con GREP найдем любой текст в любом файле

Прежде всего мы объясним доступные варианты:

  • –i: не будет различать верхний и нижний регистр.
  • –w: заставить его находить только определенные слова.
  • –v: выбирает строки, которые не совпадают.
  • –n: показывает номер строки с запрошенными словами.
  • –h: удаляет префикс из имени файла Unix в выводе.
  • –r: рекурсивный поиск в каталогах.
  • –R: как -r, но следуйте всем символическим ссылкам.
  • –l: показывает только имена файлов с выделенными строками.
  • –c- Показывает только одно количество выбранных строк для каждого файла.
  • -Цвет: Отображает совпадающие шаблоны в цветах.

На изображении, которое вы указали в заголовке этой статьи, я искал слово «Изображения» в файле «830.desktop», который находится по этому пути. Как видите, я написал:

  • grep -i images /home/pablinux/Documentos/830.desktop, где «изображения» - это слово, которое мы хотим найти, а остальное - файл с его путем. В этом примере выполняется поиск «изображений» в файле «830.desktop» без учета регистра.
  • grep -R изображения: он будет искать во всех строках каталога и всех его подкаталогах, где найдено слово «изображения».
  • grep -c пример test.txt: это будет искать нас и показывать общее количество раз, когда "example" появляется в файле с именем "test.txt".

С помощью grep мы также можем искать файлы

Если мы хотим найти файл 830.desktop, мы напишем следующую команду:

Это выполнит найдите файл «830.desktop» в личной папкеДругими словами, если файл находится в личной папке другого пользователя, он не будет найден. Это самая нормальная вещь в мире, потому что у пользователя нет разрешения на доступ к чужому контенту без своего пароля.

Как выполнять рекурсивный поиск

GREP это также позволяет нам выполнять поиск в соответствии с повторяющимися правилами или рекомендациями. Например, прочтите все файлы в каждом каталоге, содержащие слово «Pablinux». Для этого напишем:

Мы увидим результаты для «Pablinux» в отдельной строке, перед которой будет указано имя файла, в котором он был найден. Если мы не хотим видеть имена файлов в выводе данных, мы будем использовать опцию -h (от «скрыть»; скрыть):

Мы можем объединить варианты вместе и написать «-hR» без кавычек.

Как выполнять точный поиск слов

Иногда есть файлы, которые содержат то, что мы хотим найти для чего-то еще. Например, это может произойти с нами в сложных словах, и, выполнив поиск по слову «леса», мы можем найти «рейнджеров». Если мы хотим найти точное слово мы будем использовать опцию -w:

Вышеупомянутая команда будет искать «леса», игнорируя рейнджеров, в файле «vacation.txt» по указанному пути. Если мы хотим найти два разных слова, мы воспользуемся командой задать расширенное:

Узнайте, сколько раз слово появляется в файле

GREP он также способен посчитайте, сколько раз встречается слово в файле. Для этого мы будем использовать опцию -c:

Добавив параметр -n, мы увидим номер строки, в которой появляется слово.

Обратный поиск

Мы также можем сделать обратное, то есть искать строки, не содержащие слова. Для этого мы будем использовать параметр -v, который будет выглядеть следующим образом:

Приведенная выше команда отобразит все строки, в которых нет слова «the». Это может пригодиться в документах или списках, в которых слово повторяется много раз, и по какой-то причине нам нужен доступ к остальным строкам.

Доступ к системной информации с помощью GREP

Модель ПК

GREP он не только способен выполнять поиск в файлах. Это также возможность просматривать системную информацию. На предыдущем снимке экрана мы видим, как он показывает нам, какая у нас модель ПК (я знаю, что это не самый мощный ноутбук в мире). Для этого мы использовали команду:

Если мы хотим увидеть имена дисковых накопителей, мы напишем:

Как вывести список только совпадающих имен файлов

Если мы хотим увидеть список только с именами файлов, которые соответствуют поисковому запросу, мы будем использовать параметр -l, как показано ниже:

И если мы хотим видеть слово в цветах, мы напишем:

Как видите, команда GREP является очень мощный инструмент Это стоит особенно в тех случаях, когда мы не помним, где мы что-то написали или в программировании. Кроме того, он помогает нам узнавать информацию о системе так, как это понравится любителям Терминалов. Было ли вам полезно это руководство по команде поиска текстов? GREP?

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Убунлог » Ubuntu » Команда grep: мощный инструмент для поиска текста в Терминале


Он в основном используется для сопоставления и вывода указанного текста в заданных текстовых файлах в разных форматах.

У grep также есть подверсии вроде egrep, которые предоставляют расширенные функциональные возможности, такие как регулярные выражения.

В этом руководстве мы узнаем, как загрузить, установить и использовать grep и egrep для операционных систем Windows.

Он также предоставляется GNU для операционных систем и платформ Windows.

Мы можем скачать установочный файл grep со следующей страницы.


Или просто мы можем скачать по следующей ссылке напрямую.

Но имейте в виду, что когда появятся новые версии, следующая ссылка будет устаревшей.

Установить GNU Grep

Мы начнем установку, щелкнув на файл gre-2.5.4-setup.exe.


Это может потребовать некоторых административных привилегий.

Таким образом, мы предоставим права администратора, нажав Да в диалоговом окне.

Под стартовым экраном установки GNU Grep

Далее следуйте подсказкам установщика в графическом режиме.


Задать путь Grep для переменных среды

В соответствии с заданной конфигурацией grep устанавливается в C:\Program Files\GnuWin32\ в каталоге bin.

Чтобы вызвать и использовать команду grep из MS-DOS или командной строки, нам нужно добавить этот путь к переменным среды PATHvariable.

Мы также можем увидеть исполняемые файлы с именами egrep, fgrep и grep на следующем экране.


Мы можем установить путь разными способами, но наиболее практичным является использование слишком setx командной строки, как показано ниже.

Затем мы можем проверить, открыв новую командную строку или окно MS-DOS и запустив команду grep, как показано ниже.


Мы можем увидеть, что команда grep установлена и ожидает некоторый параметр и файл для работы.

Вывести справочную информацию Grep


Поиск текста или слова с grep в Windows

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

Шаблон поиска по словам Grep. Исключения каталогов и файлов.

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

Исключить слова и шаблоны

Чтобы отображать только те строки, которые не соответствуют поисковому шаблону, используйте параметр -v (или --invert-match ).

Например, чтобы напечатать строки, которые не содержат строку, nologin вы должны использовать:

-w Опция говорит grep вернуть только те строки , где указанная строка представляет собой целое слово (заключенные символы без слов).

По умолчанию учитывается grep регистр. Это означает, что символы верхнего и нижнего регистра рассматриваются как разные. Чтобы игнорировать регистр при поиске, вызовите grep с -i опцией.

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

Чтобы указать два или более шаблонов поиска, используйте -e опцию:

Вы можете использовать эту -e опцию сколько угодно раз.

Другой вариант исключения нескольких шаблонов поиска - объединение шаблонов с помощью оператора ИЛИ | .

В следующем примере печатаются строки, не содержащие строк nologin или bash :

GNU grep поддерживает три синтаксиса регулярных выражений: базовый, расширенный и совместимый с Perl. По умолчанию grep интерпретирует шаблон как базовое регулярное выражение, в котором метасимволы, например, | теряют свое особое значение, и вы должны использовать их версии с обратной косой чертой.

Если вы используете опцию расширенного регулярного выражения -E , то оператор | не следует экранировать, как показано ниже:

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

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

Например, чтобы распечатать все запущенные процессы в вашей системе, кроме тех, которые выполняются как пользователь «root», вы можете отфильтровать вывод ps команды:

Исключить каталоги и файлы

Иногда при выполнении рекурсивного поиска с опциями -r или -R вы можете захотеть исключить определенные каталоги из результатов поиска.

Основное различие между параметрами -r или -R заключается в том, что когда grep вызывается с прописными буквами, R он будет следовать всем символическим ссылкам.

Чтобы исключить каталог из поиска, воспользуйтесь --exclude-dir опцией. Путь к исключенному каталогу относительно каталога поиска.

Вот пример, показывающий, как искать строку baksdev во всех файлах внутри /etc , за исключением /etc/pki каталога:

Чтобы исключить несколько каталогов, заключите исключенные каталоги в фигурные скобки и разделите их запятыми без пробелов.

Например, чтобы найти файлы , которые содержат строку «Гну» в вашей системе Linux исключая proc , boot и sys каталоги , которые вы бы запустить:

При использовании сопоставления с подстановочными знаками вы можете исключить файлы, базовое имя которых совпадает с GLOB, указанным в --exclude опции.

В приведенном ниже примере мы ищем строку во всех файлах в текущем рабочем каталоге, за baksdev исключением файлов, оканчивающихся на .jpg и .jpg :

Читайте также: