22

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

我想创建一个 SINGLE tarball/gzip 文件,该文件维护目录结构但排除所有带有*.xdr扩展名的文件。

我怎样才能做到这一点?

我做了类似的事情,find . -depth -name *.asc -exec gzip -r9 {} +但这对每个*.asc文件单独进行 gzip 压缩,这不是我想要做的。

4

2 回答 2

51

您需要使用以下--exclude选项:

tar -zc -f test.tar.gz --exclude='*.xdr' *

于 2013-08-01T15:51:56.300 回答
1

gzip 将始终单独处理文件。如果您想要一个捆绑的存档,您必须先 tar 文件,然后 gzip 结果,因此您最终会得到一个 .tar.gz 文件或简称 .tgz。

为了更好地控制您正在做的事情,您可以首先find使用您已经发布的命令(使用 -print 而不是 gzip 命令)将文件放入文件中,然后使用此文件(=filelist.txt)指示 tar 归档什么

tar -T filelist.txt -c -v -f myarchive.tar
于 2013-08-01T15:42:18.370 回答