Оказалось, что виноват мой DIR-850L, я заменил его на Asus RT-AC66R и теперь все работает корректно, как и ожидалось.
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
Преимущество заключается в том, что вы можете сделать
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