¿Cómo comprimo todos los archivos de forma recursiva en un directorio de destino?

Respuestas:

15

Usando los comandos a continuación. Reemplace <path_of_your_zips>con la ruta a sus archivos ZIP y <out>con su carpeta de destino:

  • Para archivos 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>
    
  • Para archivos 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>
    
AB
fuente
¿Funciona esto con archivos .gz?
user2028856
1
mejorado, ahora sí :)
AB
2
¿Por qué no me -execgusta find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Elliott Frisch
1
funciona solo para archivos tarball, no solo para archivos con cremallera g
Covich
1
Los archivos comprimidos que no son archivos tar dan este error:tar: This does not look like a tar archive
pausa hasta nuevo aviso
64

gunziptiene -ropción. De 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 ).

Entonces, si desea gunziptodos los archivos comprimidos ( gunzipactualmente puede descomprimir archivos creados por gzip, zip, comprimir, comprimir -H o paquete) dentro del directorio /foo/bary todos sus subdirectorios:

gunzip -r /foo/bar

Esto también manejará los nombres de archivo con espacios.

heemayl
fuente