Получение объединенного количества всех случаев строки в соответствии с несколькими каталогами?

ssh должностное лицо mike@portal ssh mike@webserver

Принятие Вас соединяется с ключами, больше флагов потребовало при использовании интерактивных паролей.

3
16.05.2016, 01:58
2 ответа
for d in */*/*/*; do
  printf '%s: ' "$d"
  zcat -- "$d/"*.gz | grep -Fc STRING
done

подсчитывает количество строк, содержащих STRING.

Замените grep -Fc STRING на grep -Fo STRING | wc -l (предполагая GNU grep), чтобы получить количество вхождений.

Замените zcat на gzip -dc, если ваш zcat не поддерживает .gz файлы.

С помощью zsh и GNU grep вы можете сократить его до:

for d (*/*/*/*) zcat $d/*.gz | grep -FcH --label=$d STRING
6
27.01.2020, 21:10

Если вы хотите сделать это без стандартного анализатора логов, вы можете сделать это в "одной строке" оболочки из каталога, содержащего ваши YYYY-диры:

for d in */*/*; do 
  echo -n "$d : "
  find $d -name *.log | xargs grep -c STRING
done
3
27.01.2020, 21:10

Теги

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