У меня есть куча файлов .html в каталоге. Я хочу просмотреть каждый файл и сопоставить шаблон (MD5). Все это достаточно просто. Проблема в том, что мне нужно знать, в каком файле найдено совпадение.
cat *.html | grep 75447A831E943724DD2DE9959E72EE31
Возвращает только содержимое HTML-страницы, где найдено совпадение, но оно не сообщает мне файл, в котором оно было найдено. Как я могу получить grep, чтобы показать мне имя файла, где найдено мое совпадение?
command-line
grep
Будь моим другом
источник
источник
Ответы:
источник
-H
нет необходимости.cat
.cat
означает объединить. Если вы объедините все файлы вместе, прежде чем передать ихgrep
,grep
посмотрите только один большой стандартный входной файл и не сможете (если не считать гадания) вернуть вам информацию об отдельных файлах. Видеть?. Сайрус, как насчет объяснения этого в ответе?Я использую это все время, чтобы искать файлы, содержащие строку, рекурсивно в каталоге (это означает, что обход любой подпункт подпапки)
grep -Ril "yoursearchtermhere"
R
это искать рекурсивно (по символическим ссылкам)i
это сделать его без учета регистраl
это просто список имен файлов.поэтому ответ на ваш вопрос
grep -l '75447A831E943724DD2DE9959E72EE31' *.html
будет полезен, но вы можете простоgrep -Ril '75447A831E943724DD2DE9959E72EE31'
найти эту строку без учета регистра в любом файле в любой подпапке.источник
stdin
( grep: warning: рекурсивный поиск stdin , независимо от того , что будет означать рекурсивный ввод stdin :-). Другими словами:grep -Ril 'texttofind' *
grep -RiH 'pattern'
показывает имя файла и совпадающую строкуВы можете попробовать это
источник
Альтернативой
Выполнение выше приведет к рекурсивному поиску в папке и подпапках и выведет путь к файлу ...
источник
Ответ, опубликованный Сайрусом, абсолютно правильный, и это Правильный путь ТМ, чтобы сделать это,
grep
если нам нужно только найти файлы . Когда имена файлов требуют дополнительного разбора или операций над совпадающими именами файлов, мы можем прибегнуть к использованиюwhile
цикла сif
оператором. Вот пример, где список имен файлов происходит из очень часто используемой структурыfind
+while
для безопасного анализа имен файлов.источник
grep
«s--include
флаг.