Gunzip несколько архивов в определенную папку
Есть ли возможность заархивировать несколько файлов в одну папку?
У меня есть много журналов доступа, которые мне нужны, чтобы извлечь папку do. Там размещены в /var/log/nginx/
и они названы как access.log.2.gz
Но есть хитрый... Мне нужны все архивы из этой папки за один конкретный месяц.
Есть много этих журналов доступа, и мне нужно их извлечь в каталог /var/log/nginx/target
Я уже тестировал
for f in *.gz; do
STEM=$(access.log. "${f}" .gz)
gunzip -c "${f}" > /var/log/nginx/target/"${STEM}"
done
Но не работал вообще..
2 ответа
Решение
Я полагаю, что проблема с вашим кодом - это, скорее всего, расчет STEM. Мне не сразу ясно, в каком формате находятся ваши файлы или как вы собираетесь их группировать, но попробуйте что-то вроде:
# Find files created within date range:
fromdate="201606010000"
todate="201606302359"
touch -t $fromdate /tmp/fromdate.del
touch -t $todate /tmp/todate.del
# Extract only the desired files to destination, removing the .gz extension
for f in `find /var/log/nginx/*.gz -type f -newer $fromdate ! -newer $todate`
do
zcat $f > /var/log/ngiz/target/${f::-3}
done
Предполагая, что вы не знаете, какие журналы содержат июнь:
zcat *gz | grep Jun > junelog