web-dev-qa-db-ja.com

ターゲットディレクトリですべてのファイルを再帰的にgunzipするにはどうすればよいですか?

ターゲットディレクトリ内のすべてのファイルを再帰的にgunzipするために使用するコマンドは何ですか? unzipコマンドを使用しようとしましたが、機能しませんでした。

ターゲットフォルダー内のすべてのZipファイルを解凍しますか? からコマンドを試しました。

26
user2028856

以下のコマンドを使用します。 <path_of_your_zips>をZipファイルへのパスに、<out>を宛先フォルダーに置き換えます。

  • GZファイルの場合

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

    または

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Zipファイルの場合

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

    または

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

gunzipには-rオプションがあります。 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 ).

したがって、gunzipすべての圧縮ファイル(gunzipは現在、gzip、Zip、compress、compress -Hまたはpackで作成されたファイルを解凍できます)/foo/barおよびそのすべてのサブディレクトリ内に配置する場合:

gunzip -r /foo/bar

これは、スペースを含むファイル名も処理します。

61
heemayl