Ищу инструмент для поиска текста в файлах в командной строке - PullRequest
0 голосов
/ 25 апреля 2011

Здравствуйте. Я ищу какой-нибудь скрипт или программу, использующую ключевые слова или шаблон поиска в файлах ex.php, html и т. д. и покажите, где находится этот файл

Я использую команду cat / home / * |grep "ключевое слово", но у меня слишком много папок и файлов, и эта команда вызывает большое время безотказной работы: /

Мне нужен этот скрипт для поиска поддельных сайтов (paypal, ebay и т. д.)

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Вы действительно не говорите, какую ОС (и оболочку) вы используете. Возможно, вы захотите пометить свой вопрос, чтобы помочь нам.

Поскольку вы упоминаете cat | ..., я предполагаю, что вы используете вариант Unix / Linux, поэтому вот несколько советов для просмотра файлов. (решение bmargulies тоже хорошо).

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

grep - базовая программа для поиска файлов по текстовым строкам. Его использование

grep [-options] 'search target' file1 file2 .... filen

(Обратите внимание, что 'target для поиска' содержит пробел, если вы не окружите пробелы в searchTarget двойными или одинарными кавычками, у вас будет небольшая ошибка для отладки.)

(Также обратите внимание, что «цель поиска» может использовать широкий спектр символов подстановки, например.,?, +, ,. и многие другие, что выходит за рамки вашего вопроса ). ... в любом случае ...

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

startDir=/home
find ${startDir} -print | xargs grep -l 'Search Target'

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


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

man grep

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

man grep | page

чтобы вы могли видеть верхнюю часть «документа». Нажмите любую клавишу, чтобы перейти на следующую страницу, и когда вы окажетесь в конце документа, последнее нажатие клавиши вернет вас в командную строку.

Некоторые опции, которые есть у большинства greps, могут быть вам полезны:

-i (ignore case)
-l (list filenames only (where txt is found)

Существует также fgrep, который обычно интерпретируется как «file» grep потому что вы можете дать ему файл целей поиска для поиска, который используется как

fgrep [-other_options] -f srchTargetsFile file1 file2 ... filen

Мне нужен этот скрипт для поиска поддельных сайтов (PayPal, Ebay и т. Д.)

Окончательное решение

вы можете сделать srchFile как

paypal.fake.com ebay.fake.com etc.fake.com

и затем в сочетании с вышеприведенным запустите следующее

startDir=/home
find ${startDir} -print | xargs fgrep -il -f srchFile 

Некоторые команды greps требуют, чтобы -fsrchFile запускались вместе.

Теперь вы находите все файлы, начиная с / home, выполняя поиск с помощью fgrep для paypay, ebay и т. Д. Во всех файлах. -L говорит, что он напечатает ТОЛЬКО имя файла, где найдено совпадение. Вы можете удалить -l, а затем вы увидите вывод того, что найдено, с добавлением имени файла.

IHTH.

1 голос
/ 25 апреля 2011
find /home -exec grep -s "keyword" {} \; -print
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...