Как объединить повернутые журналы вместе, чтобы создать исходный файл?
huali-access.log huali-access.log.15 huali-access.log.21 huali-access.log.28 huali-access.log.34 huali-access.log.40 huali-access.log.47 huali-access.log.6
huali-access.log.1 huali-access.log.16 huali-access.log.22 huali-access.log.29 huali-access.log.35 huali-access.log.41 huali-access.log.48 huali-access.log.7
huali-access.log.10 huali-access.log.17 huali-access.log.23 huali-access.log.3 huali-access.log.36 huali-access.log.42 huali-access.log.49 huali-access.log.8
huali-access.log.11 huali-access.log.18 huali-access.log.24 huali-access.log.30 huali-access.log.37 huali-access.log.43 huali-access.log.5 huali-access.log.9
huali-access.log.12 huali-access.log.19 huali-access.log.25 huali-access.log.31 huali-access.log.38 huali-access.log.44 huali-access.log.50
huali-access.log.13 huali-access.log.2 huali-access.log.26 huali-access.log.32 huali-access.log.39 huali-access.log.45 huali-access.log.51
huali-access.log.14 huali-access.log.20 huali-access.log.27 huali-access.log.33 huali-access.log.4 huali-access.log.46 huali-access.log.52
Если для файлов установлено правильное время модификации (например, вы не копировали их, не позаботившись о сохранении времени модификации), вы можете использовать
cat $(ls -t huali-access.log*) > output.log
В -t
опция в ls отсортирует его по времени модификации.
как это:
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
От @ 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
Это объединит все файлы журнала * (включая сжатый сжатие) в log.all. Просто замените "журнал", чтобы использовать его.
l='log'; test -f ${l}.all && rm ${l}.all; ls -1tr ${l}* | xargs zcat -f >> $l.all
ls -1t *.access.log* | xargs zcat > access.all.log