如何将所有文件递归压缩到目标目录中?


Answers:


15

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

这适用于.gz文件吗?
user2028856

1
改善了,现在是:)
AB

2
为什么不-exec喜欢find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;
艾略特·弗里施

1
仅适用于tarball文件,而不适用于g压缩文件
Covich 17/12/12

1
不是tar文件的gzip压缩文件会出现此错误:tar: This does not look like a tar archive
已暂停,直到另行通知。

64

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.