web-dev-qa-db-fra.com

Comment gunzip tous les fichiers récursivement dans un répertoire cible?

J'aimerais savoir quelle est la commande à utiliser pour gunzip tous les fichiers d'un répertoire cible de manière récursive? J'ai essayé d'utiliser la commande unzip mais cela n'a pas fonctionné.

J'ai essayé la commande de Décompresser tous les fichiers Zip dans un dossier cible?

25
user2028856

En utilisant les commandes ci-dessous. Remplacez <path_of_your_zips> par le chemin d'accès à vos fichiers Zip et <out> par votre dossier de destination:

  • Pour les fichiers 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>
    
  • Pour les fichiers 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>
    
15
A.B.

gunzipa -r option. 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 ).

Ainsi, si vous souhaitez gunzipname__, tous les fichiers compressés (gunzippeuvent actuellement décompresser les fichiers créés par gzip, Zip, compresser, compresser -H ou pack) dans le répertoire /foo/bar et tous ses sous-répertoires:

gunzip -r /foo/bar

Cela gérera aussi les noms de fichiers avec des espaces.

58
heemayl