Назад | Перейти на главную страницу

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

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

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.