Я хочу сделать следующее:
cat *.xml | grep some_string_here
Это говорит мне, существует ли конкретная строка в XML-файле в каталоге. К сожалению, это не говорит мне который файл.
как я могу сделать это лучше? cat
команда не видит, что у меня есть переключатель, который добавляет префикс имени файла к выходным данным ...
cat
не нужно (UUOC!) grep
обычно сообщит вам, в каком файле была найдена совпадающая строка, при таком использовании:
grep some_string_here *.xml
Вы также можете использовать -H
переключиться всегда на это:
grep -H some_string_here *.xml
Просто используйте 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 *.xml
вместо этого grep автоматически добавит имя файла к каждому совпадению.
grep some_string_here /dev/null *.xml
... является небольшим улучшением по сравнению с другими предложениями, приведенными выше, поскольку он гарантирует, что имя файла, содержащего совпадение, всегда печатается, даже если текущий каталог содержит только один файл XML.