gunzip wielu archiwów do określonego folderu


1

czy istnieje możliwość rozprucia wielu plików do jednego folderu?

Mam wiele dzienników dostępu, które muszę wyodrębnić do folderu. Tam umieszczony /var/log/nginx/ i są nazwani jak access.log.2.gz Ale jest trudny ... Potrzebuję wszystkich archiwów z tego folderu z jednego miesiąca.

Istnieje wiele takich dzienników dostępu i muszę je rozpakować do katalogu /var/log/nginx/target

Już testowałem

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

Ale w ogóle nie działał ..


Dlaczego po prostu „gunzip *” nie rozpakuje każdego z plików? Plik o nazwie access.log.XX.gz powinien rozpakować do access.log.XX - a symbol wieloznaczny powinien umożliwiać przetwarzanie wszystkich plików jednocześnie.
davidgo

Istnieje około 60 plików dziennika, każdy z innej daty, potrzebuję tylko od czerwca .. dlatego :)
Delirium

Odpowiedzi:


0

Myślę, że problem z twoim kodem jest najprawdopodobniej obliczeniem STEM. Nie jest dla mnie natychmiast jasne, w jakim formacie są twoje pliki lub jak je pogrupujesz, ale spróbuj czegoś takiego:

# 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

0

Zakładając, że nie wiesz, które dzienniki zawierają czerwiec:

zcat *gz | grep Jun > junelog
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.