如何以递归方式压缩目标目录中的所有文件?

如何以递归方式压缩目标目录中的所有文件?

我想知道用什么命令来递归地压缩目标目录中的所有文件?我尝试使用 unzip 命令,但没有成功。

我尝试了解压目标文件夹中的所有 zip 文件吗?

答案1

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

这也将处理带有空格的文件名。

答案2

使用以下命令。将其替换<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>
    

相关内容