GNU/Linux >> Znalost Linux >  >> Linux

Komprimujte každý soubor v adresáři do vlastního komprimovaného souboru

Řešení 1:

Vkládání každého souboru do samostatného souboru tar v tomto scénáři nedává žádný smysl. Můžete použít gzip pro přímou kompresi:

gzip *

výsledkem bude file1.out.gz , file2.out.gz atd.

Použili byste tar pouze v případě, že byste potřebovali komprimovaný archiv jako jeden soubor.

Pokud potřebujete archiv tar pro každý soubor, můžete jej vytvořit takto:

for i in *; do tar -czf $i.tar.gz $i; done

Řešení 2:

Chcete-li stavět na odpovědi @SvenW (která bude fungovat pouze v aktuálním adresáři), pokud máte OBROVSKÝ počet souborů nebo to chcete udělat v rekurzivní adresářové struktuře, můžete také použít

find . -type f -exec gzip \{\} \;

a pokud potřebujete umístit výstup do jiného adresáře (v tomto příkladu ../target ) a nechcete odstraňovat originály, můžete udělat něco jako:

find . -type f -print | while read fname ; do
    mkdir -p "../target/`dirname \"$fname\"`"
    gzip -c "$fname" > "../target/$fname.gz"
done

Linux
  1. Jak tarovat (komprimovat) soubory, s výjimkou určitých souborů nebo adresářů

  2. Jak Globovat každý skrytý soubor kromě aktuálního a nadřazeného adresáře?

  3. Tar:Extrahovat jeden soubor do adresáře bez vytváření podsložek?

  1. Vyloučení adresáře při vytváření souboru .tar.gz

  2. Rozbalte soubor v sestavách Solaris - tar:chyba kontrolního součtu adresáře

  3. Jak vytvořit archiv zip adresáře kompatibilní s Linuxem na počítači Mac

  1. Kopírovat obsah souboru do schránky bez zobrazení jeho obsahu?

  2. Jak přihlásit každý příkaz zadaný do Bash a každou operaci se souborem?

  3. Jak gzipovat více souborů do jednoho souboru gz?