2014-06-13 59 views
1

我想tar/zip一个目录./(当前工作目录)并排除目录中的文件./vendor,我碰巧也有一个名为供应商在./public/web/vendor子目录,但我想保持。我试过了:tar --excludes选项只排除当前工作目录下的目录,而不是子目录

tar cfz /private/var/folders/temp/mage6BRQWJ.tar.gz --exclude=vendor/*  ./ 
tar cfz /private/var/folders/temp/mage6BRQWJ.tar.gz --exclude=./vendor/* ./ 
tar cfz /private/var/folders/temp/mage6BRQWJ.tar.gz --exclude="vendor/*"  ./ 

但是这些都排除子目录。

我想使用相对路径,因为我想排除所有目录中的所有.svn(例如)文件。

有没有一种方法,使用相对路径来排除./vendor目录中的文件,但不是./public/web/vendor?

回答

1

所有你需要的是--anchored标签:

的GNU tar:

tar cfz mage6BRQWJ.tar.gz --anchored --exclude=vendor * 

的bsdtar:

bsdtar -czf mage6BRQWJ-1.tar.gz --exclude=^vendor * 

工程。

+0

我试过了, - 在我的tar版本中没有锚定。 (bsdtar) – DavidLin

+0

无赖。在Linux上,我有一个较老的tar 1.26,'--anched'修改了'--include'和'--exclude',使**模式匹配文件名start **,与默认的'--no-anchored'相比模式匹配任何'/'后。有没有一种方法可以修补你的版本。我会检查bsdtar,但是GNU tar所做的是微不足道的。 –

+0

我认为固定它'--exclude =^vendor' –

相关问题