вот так:
cat huali-access.log* > merged-huali-access.log
или, чтобы убедиться, что это в хронологическом порядке:
echo -n "" > merged-huali-access.log # creating new file and making sure its empty
for i in {1..52}
do
cat huali-access.log.${i} >> merged-huali-access.log
done
cat huali-access.log >> merged-huali-access.log
Если для файлов установлено правильное время модификации (например, вы не копировали их, не позаботившись о сохранении времени модификации), вы можете использовать
cat $(ls -t huali-access.log*) > output.log
-t
в ls отсортирует его по времени модификации.
От @ mauro.stettler, Исправлена проблема с порядком файлов, также сделана общая:
for LOG in *.log; do
( for i in {100..1}; do
F=${LOG}.${i};
[ -e $F ] && cat $F;
done ; cat ${LOG} ) > aggregated_${LOG};
done
Или вы можете использовать в журналах доступа, не столь общих, как другие, которые вы можете применить к любому журналы и не будут работать в разные месяцы:
cat accesslog.log* | sort -nk 4 > aggregated_accesslog.log
Это объединит все файлы журнала* (включая gzipped) в log.all. Просто замените "log", чтобы использовать его
l='log'; test -f ${l}.all && rm ${l}.all; ls -1tr ${l}* | xargs zcat -f >> $l.all