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

Оказалось, что виноват мой DIR-850L, я заменил его на Asus RT-AC66R и теперь все работает корректно, как и ожидалось.

1
26.09.2014, 23:49
2 ответа

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

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
1
27.01.2020, 23:52

Преимущество заключается в том, что вы можете сделать

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
0
27.01.2020, 23:52

Теги

Похожие вопросы