Найдите определенную строку в каталоге

Я хочу сделать следующее:

cat *.xml | grep some_string_here

Это говорит мне, существует ли конкретная строка в XML-файле в каталоге. К сожалению, это не говорит мне, какой файл.

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

4 ответа

Решение

cat не нужно (UUOC!) grep обычно говорит вам, в каком файле была найдена совпавшая строка, когда используется следующим образом:

   grep some_string_here *.xml

Вы также можете использовать -H переключиться всегда на это:

   grep -H some_string_here *.xml

Вам нужно сделать:

grep some_string_here *.xml

вместо этого grep автоматически добавит имя файла к каждому совпадению.

Просто используйте grep

grep some_string *.xml

На выходе будет что-то вроде

a.xml: string containing some_string
xyzzy.xml:some_string in a different line

Если файл содержит более одного вхождения some_string, каждое вхождение будет напечатано. Если вы используете

grep -l some_string *.xml

будет напечатано только имя файла.

grep some_string_here /dev/null *.xml

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

Другие вопросы по тегам