2014-06-13 95 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' –

相關問題