Mehrere Dateien mit Gunzip komprimieren und umbenennen

Mehrere Dateien mit Gunzip komprimieren und umbenennen

Ich möchte wissen, ob es möglich ist, gunzipmehrere Dateien mit einem Befehl/Skript umzubenennen.

Ich habe eine Reihe von Dateien im Format:

test.20120708191601.DAT.3599502593.gz
test.20120708201601.DAT.99932140.gz
test.20120708204600.DAT.1184686967.gz
test.20120708212100.DAT.824089664.gz
test.20120708215100.DAT.1286044098.gz
test.20120708222100.DAT.1414234861.gz

Ich muss gunzipsie und alles nach dem entfernen .DAT, um das Format zu erhalten:

test.20120708191601.DAT
test.20120708201601.DAT
test.20120708204600.DAT
test.20120708212100.DAT
test.20120708215100.DAT
test.20120708222100.DAT

Antwort1

Versuche dies:

for file in *.gz; do
  gunzip -c "$file" > "${file/.DAT*/.DAT}"
done

Der Ansatz verwendet gunzipdie Option von , um den unkomprimierten Stream auf die Standardausgabe ( -c) auszugeben, sodass wir ihn ohne einen zweiten Umbenennungsaufruf in eine andere Datei umleiten können. Die Umbenennung erfolgt an der Dateinamenvariable selbst durch bashSubstitution (passen Sie jedes Globbing-Muster an .DAT*und ersetzen Sie es durch .DAT). Die Schleife selbst iteriert einfach über Dateien im aktuellen Verzeichnis, deren Namen mit enden .gz.

verwandte Informationen