Lösung 1:
In diesem Szenario macht es keinen Sinn, jede Datei in eine separate Tar-Datei zu stecken. Sie können gzip
verwenden um sie direkt zu komprimieren:
gzip *
ergibt file1.out.gz
, file2.out.gz
usw.
Sie würden tar
verwenden nur wenn Sie ein komprimiertes Archiv als einzelne Datei benötigen würden.
Wenn Sie für jede Datei ein Tar-Archiv benötigen, können Sie es folgendermaßen erstellen:
for i in *; do tar -czf $i.tar.gz $i; done
Lösung 2:
Um auf der Antwort von @SvenW aufzubauen (die nur im aktuellen Verzeichnis funktioniert), können Sie auch
verwenden, wenn Sie eine RIESIGE Anzahl von Dateien haben oder dies in einer rekursiven Verzeichnisstruktur tun möchtenfind . -type f -exec gzip \{\} \;
und wenn Sie die Ausgabe in einem anderen Verzeichnis ablegen müssen (in diesem Beispiel ../target
) und die Originale nicht entfernen möchten, können Sie Folgendes tun:
find . -type f -print | while read fname ; do
mkdir -p "../target/`dirname \"$fname\"`"
gzip -c "$fname" > "../target/$fname.gz"
done