tar/gzip文件压缩时如何排除特定文件?

22

我有一个包含许多子目录的目录。在其中一些子目录中,我有扩展名为*.asc*.xdr的文件。

我想创建一个单一的tarball/gzip文件,保持目录结构,但排除所有扩展名为*.xdr的文件。

我该怎么做?

我尝试过类似于find . -depth -name *.asc -exec gzip -r9 {} +这样的命令,但是这会分别对每个*.asc文件进行gzip压缩,而不是我想要的结果。

2个回答

53
您需要使用--exclude选项: tar -zc -f test.tar.gz --exclude='*.xdr' *

1
多个文件的语法是什么?我尝试了*.xdr,*.pdf但失败了。 - Jack
7
我通过再次添加 --exclude 来完成它。--exclude='*.pdf' --exclude='*.mp4' - Jack

1

gzip永远只会单独处理文件。如果你想打包存档,你需要先使用tar将文件打包,然后再使用gzip压缩结果,因此最终你会得到一个.tar.gz文件或.tgz文件。

为了更好地控制你所做的事情,你可以首先使用你已经发布的命令(使用-print而不是gzip命令)查找文件并将它们放入一个文件中,然后使用这个文件(=filelist.txt)来指示tar要归档的内容。

tar -T filelist.txt -c -v -f myarchive.tar

好的。我怎么用tar做到呢? - user1654183
我觉得这样应该可行:tar -cf src.tar --exclude='*.xdr' src - user1654183

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接