Gunzip несколько архивов в определенную папку

286
Delirium

Есть ли возможность заархивировать несколько файлов в одну папку?

У меня есть много журналов доступа, которые мне нужны, чтобы извлечь папку do. Там размещены /var/log/nginx/и они названы как access.log.2.gz Но есть хитрый .. Мне нужны все архивы из этой папки за один конкретный месяц.

Есть много этих журналов доступа, и мне нужно их извлечь в каталог /var/log/nginx/target

Я уже тестировал

for f in *.gz; do STEM=$(access.log. "$" .gz) gunzip -c "$" > /var/log/nginx/target/"$" done 

Но не работал вообще ..

1
Почему бы просто не "gunzip *", чтобы разархивировать каждый из файлов? Файл с именем access.log.XX.gz должен распаковать в access.log.XX - и подстановочный знак должен позволить вам обрабатывать все файлы одновременно. davidgo 8 лет назад 0
Существует около 60 файлов журнала, каждый из которых отличается от даты, мне нужно только с июня .. вот почему :) Delirium 8 лет назад 0

2 ответа на вопрос

0
Ole Tange

Предполагая, что вы не знаете, какие журналы содержат июнь:

zcat *gz | grep Jun > junelog 
0
davidgo

Я полагаю, что проблема с вашим кодом - это, скорее всего, вычисление 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/$ done