您正在尋找--exclude
說法。
--exclude=PATTERN
部分用戶發現exclude
選項令人困惑。下面是一些常見的陷阱:
的tar
主要經營模式不會在其文件名中的一個組成部分 被排除在命令行中明確列出的路徑名 行事。在上面的示例中,如果創建 存檔並排除以*.o
結尾的文件,但在列出所有選項後明確指定文件dir.o/foo
的文件名稱爲 ,則將從存檔中排除 dir.o/foo
。
有時您可能會混淆--exclude=PATTERN
和 --exclude-from=FILE-OF-PATTERNS
(-X FILE-OF-PATTERNS
)的含義。謹慎使用 :使用--exclude=PATTERN
當要排除的文件是 作爲命令行中的模式給出時。使用 --exclude-from=FILE-OF-PATTERNS
來引入文件名稱 ,其中包含模式列表,每行一個;這些 模式中的每一個都可以排除零個,一個或多個文件。
當您使用--exclude=PATTERN
,一定要引用PATTERN 參數,所以GNU tar
看到像*
通配符。如果 不這樣做,則shell可能會使用手頭的文件 擴展*
本身,因此tar
可能會收到一個文件列表而不是一個 模式,或者根本沒有,從而使該命令有點違法。 這可能不符合你想要的。
例如,寫:
$ tar -c -f ARCHIVE.TAR --exclude '*.o' DIRECTORY
而不是:
$ tar -c -f ARCHIVE.TAR --exclude *.o DIRECTORY
- 必須使用使用shell語法,或通配符,而不是
regexp
語法,使用排除時選項tar
。如果您嘗試使用 regexp
語法來描述要排除的文件,那麼您的命令 可能會失敗。
謝謝你的回答。你說得很對 - 排除可能有點混亂。直到我閱讀你的解釋之前,我自己並沒有完全理解它。謝謝 – VinkoCM 2009-06-27 16:07:28