Wie kann ich ein Gunzip in ein anderes Zielverzeichnis durchführen?


80

Wie kann ich ein Gunzip in ein anderes Zielverzeichnis als das aktuelle durchführen?

Das hat nicht funktioniert:

gunzip *.gz /putthemhere/

Antworten:


104

Bitten Sie gunzip, auf Standardausgabe auszugeben und zu einer Datei in diesem Verzeichnis umzuleiten:

gunzip -c file.gz > /THERE/file

zcatist eine Abkürzung für gunzip -c.

Wenn Sie mehrere Dateien gunzipen möchten, iterieren Sie über alle Dateien:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(Hier basenamewird der Teil des Dateinamens ohne die Erweiterung abgerufen)


3
Erstellt die Datei, behält jedoch nicht das Eigentumsrecht, die Berechtigungen usw. bei. Dies kann je nach Ihrer konkreten Situation gut oder schlecht sein.
Chris Johnson

2

Wenn Sie eine einzelne Datei extrahieren und in ein Stammverzeichnis schreiben müssen, verwenden Sie Folgendes sudo dd:

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

Wenn die Datei von einer entfernten Quelle stammt (dh ssh, curl https usw.), können Sie dies folgendermaßen tun:

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(Beachten Sie, dass diese Beispiele nur für eine einzelne Datei funktionieren , im Gegensatz zum Beispiel * .gz, bei dem es sich um alle gzip-Dateien im Verzeichnis handelt.)


Das Schreiben mit Root-Rechten sudo tee $filename >/dev/nullist etwas idiomatischer als das Verwenden von dd.
dcoles

1

Sie können versuchen, das Ergebnis mit> an den gewünschten Ort umzuleiten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.