Come posso comprimere tutti i file in modo ricorsivo in una directory di destinazione?


Risposte:


15

Utilizzando i comandi seguenti. Sostituisci <path_of_your_zips>con il percorso dei file ZIP e <out>con la cartella di destinazione:

  • Per i file GZ

    find <path_of_your_zips> -type f -name "*.gz" -exec tar xf {} -C <out> \;
    

    o

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Per i file ZIP

    find <path_of_your_zips> -type f -name "*.zip" -exec unzip {} -d <out> \;
    

    o

    find <path_of_your_zips> -type f -name "*.zip" -print0 | xargs -0 -I{} unzip {} -d <out>
    

Funziona con i file .gz?
user2028856

1
migliorato, ora sì :)
AB

2
Perché non mi -execpiace find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Elliott Frisch,

1
funziona solo per i file tarball, non solo per quelli con cerniera lampo
Covich,

1
I file compressi con gzip che non sono file tar danno questo errore:tar: This does not look like a tar archive
In pausa fino a nuovo avviso.

64

gunzipha -run'opzione. Da man gunzip:

   -r --recursive
          Travel  the directory structure recursively. If any of the 
file names specified on the command line are directories, gzip 
will descend into the directory and compress all the files it finds
there (or decompress them in  the  case  of gunzip ).

Quindi, se vuoi gunziptutti i file compressi ( gunzipattualmente puoi decomprimere i file creati da gzip, zip, compress, compress -H o pack) all'interno della directory /foo/bare di tutte le sue sottodirectory:

gunzip -r /foo/bar

Questo gestirà anche i nomi dei file con spazi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.