запускать grep cmd рекурсивно и печатать имя пути и результат

У меня есть файл журнала, который существует в нескольких каталогах по одному для каждого клиента. Я пытаюсь запустить следующее:

find . -iname "20140926.log" -exec cat {} \; | grep 123456 | grep 'food="100"' | wc -l 

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

 for f in "/path/*"; do result=`eval grep 123456 "$f/logs/20140926.log" | grep 'food="100"' | wc -l` echo "$f - $result" done 

Но он просто возвращает список всех моих каталогов, а затем окончательный результат. Я ожидаю что-то вроде этого:

 /path1/log/file.log - 0 /path2/log/file.log - 2 /path3/log/file.log - 39 etc... 

Таким образом, я могу видеть wc для моего grep для каждого пути / файла

2 Solutions collect form web for “запускать grep cmd рекурсивно и печатать имя пути и результат”

grep -H будет печатать имена файлов для вас, но поскольку вы выполняете несколько greps, вы можете просто эхом отозвать имя файла самостоятельно:

 for f in $(find . -name '20140926.log'); do echo -n "$f " grep 123456 $f | grep -c 'food="100"' # grep -c prints count of matches done 

Вы могли бы сделать

 find . -name 20140926.log | while read file; do printf "%s - " "$file "; grep 123456 $file | grep -c 'food=100' done 

Это имеет то преимущество, что не разбивать имена файлов с пробелами. Однако он ломается на чертах и ​​обратных косых чертах. Если ваши файлы могут быть совершенно необоснованными, используйте это:

 find . -name 20140926.log | while read -rd '' file; do printf "%s - " "$file "; grep 123456 "$file" | grep -c 'food=100' done 
  • Замена значений в одном файле значениями в другом файле в bash
  • Есть ли способ, которым я могу поместить это в свой ~ / .bashrc как функцию?
  • заголовок сценария оболочки для лучшей совместимости
  • сохранить дубликаты из $ PATH на источнике
  • Как настроить функцию масштабирования xrandr для переключения на следующее или предыдущее разрешение в предопределенном списке?
  • Список файлов из вложенного zip-файла без лишних
  • Как выбрать количество цифр в переменной в моих сценариях?
  • Сценарий оболочки для удаления нескольких файлов
  • Вызов функции, которая вызывает другую функцию с циклом for
  • Создание каталогов в цикле и перемещение файлов в эти каталоги
  • Использовать сценарий ожидания из Vagrantfile для обеспечения - проблема с несуществующим файлом во время выполнения
  • Linux и Unix - лучшая ОС в мире.