GNU/Linux >> Linux Esercitazione >  >> Linux

Comprimi ogni file in una directory nel proprio file compresso

Soluzione 1:

Mettere ogni file in un file tar separato non ha alcun senso in questo scenario. Puoi usare gzip per comprimerli direttamente:

gzip *

risulterà in file1.out.gz , file2.out.gz ecc.

Dovresti usare tar solo se avresti bisogno di un archivio compresso come un singolo file.

Se hai bisogno di un archivio tar per ogni file, puoi crearlo in questo modo:

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

Soluzione 2:

Per costruire sulla risposta di @SvenW (che funzionerà solo sulla directory corrente), se hai un numero ENORME di file o vuoi farlo su una struttura di directory ricorsiva puoi anche usare

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

e se devi inserire l'output in una directory diversa (in questo esempio, ../target ) e non vuoi rimuovere gli originali, puoi fare qualcosa del tipo:

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

Linux
  1. Come globare ogni file nascosto tranne la directory corrente e principale?

  2. Copiare il contenuto di un file negli appunti senza visualizzarne il contenuto?

  3. Tar:estrarre un singolo file in una directory senza creare sottocartelle?

  4. Come comprimere più file in un archivio .xz?

  5. Decomprimere un file sui report Solaris - tar:errore di checksum della directory

Come creare file Tar Gz

Come eseguire il tar di tipi di file specifici (estensioni) in una directory

Comando tar di Linux per comprimere ed estrarre file

Come gzippare tutti i file in tutte le sottodirectory in un file compresso in bash

Come comprimere più cartelle, ciascuna nel proprio archivio zip?

Come convertire un file TAR in un file ISO