Поиск строки в каталоге. Получить вывод без имени файла.

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

find ./files/ -name "* .txt" -print0 | xargs -0 grep "5 | 20150507"

И выход

./files/N1.942_0000.txt:78787878|13|5|20150507221152 ./files/N1.942_0000.txt:78787878|13|5|20150507221156 ./files/N1.943_0002.txt: 1221212 | 13 | 5 | 20150507222004 ./files/N1.810_0000.txt:88927166181340 ./files/N1.442_0001.txt:8648648648|13|5|20150507221636 ./files/N1.442_0001.txt:8648648648|13|5 | 20150507221638 ./files/N1.442_0001.txt:7406079160|13|5|20150507221941

Но я хочу выход без имени файла, как показано ниже.

78787878 | 13 | 5 | 20150507221152
78787878 | 13 | 5 | 20150507221156
1221212 | 13 | 5 | 20150507222004
8892716618 | 13 | 5 | 20150507215150
8648648648 | 13 | 5 | 20150507221636
8648648648 | 13 | 5 | 20150507221638
7406079160 | 13 | 5 | 20150507221941

3 Solutions collect form web for “Поиск строки в каталоге. Получить вывод без имени файла.”

Используйте grep с опцией «-h».

  -h, --no-filename Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search. 

find ./files/ -name "* .txt" -print0 | xargs -0 grep -h "5 | 20150507"

Команда grep имеет параметр -r

он ищет текст, рекурсивный по каталогу

пример ниже:

 grep -r "5|20150507" ./ | awk -F ':' {'print $2'} 
 find ./files/ -name "*.txt" -print0 | xargs -0 grep "5|20150507" | awk 'BEGIN{FS=":"} {print $2}' 

Возможно, вам придется играть с разделителем «FS =», поскольку это может быть особый символ.

  • Разный вывод `find | xargs ls` для той же команды в разных версиях Ubuntu
  • Исправлен последний аргумент с xargs
  • xargs и линейный трубопровод
  • Как заставить xargs играть хорошо с stdin?
  • Перемещение файлов с помощью find + xargs: target не является каталогом?
  • xargs внутри цикла for
  • Удаление номеров из имен файлов
  • Как получить общее количество строк с помощью `wc -l`?
  • Как создать бесконечный поток строк в bash
  • Когда требуется xargs?
  • Как повторять переменные дважды в xargs
  • Linux и Unix - лучшая ОС в мире.