Como faço gunzip todos os arquivos recursivamente em um diretório de destino?

21

Gostaria de saber qual é o comando a ser usado para gunzip todos os arquivos em um diretório de destino de forma recursiva? Eu tentei usar o comando unzip mas não funcionou.

Eu tentei o comando de Descompacte todos os arquivos zip em uma pasta de destino

    
por user2028856 07.05.2015 / 14:18

2 respostas

13

Usando os comandos abaixo. Substitua <path_of_your_zips> pelo caminho para seus arquivos ZIP e <out> com sua pasta de destino:

  • Para arquivos GZ

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

    ou

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

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

    ou

    find <path_of_your_zips> -type f -name "*.zip" -print0 | xargs -0 -I{} unzip {} -d <out>
    
por A.B. 07.05.2015 / 14:23
47

gunzip tem -r opção. 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 ).

Portanto, se você quiser gunzip de todos os arquivos compactados ( gunzip pode atualmente descompactar arquivos criados por gzip, zip, compress, compress -H ou pack) dentro do diretório /foo/bar e todos os seus subdiretórios:

gunzip -r /foo/bar

Isso também lidará com nomes de arquivos com espaços.

    
por heemayl 07.05.2015 / 14:53

Tags