tar:--exclude =“。git”:无法统计:无此类文件或目录


11

这真让我抓狂。我想要tar一个目录,但要排除一些文件。这是我的命令:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude='.git' --exclude='.gitignore'

尽管以上命令在RedHat EL5上有效,但在Mac OS 10.8.2上则无效。我曾尝试更换'"\'\"。我试过删除等号。没用。

我究竟做错了什么?


使用gnutar来自啤酒,MacPort等苹果公司的焦油也残废。
jww

Answers:


23

所有选项都必须放在参数之前,并且-f标志需要在tar文件之前:

tar -zcv --exclude ='。git'--exclude ='。gitignore'-f $ NAME- $ VERSION.tar.gz $ NAME- $ VERSION

如果这样做tar --help,该--exclude选项是否出现在帮助中?我不知道OSX,但也许有gtar现货而不是股票tar
2013年

2
我明白了吧:)试试这个: tar --exclude='.git' --exclude='.gitignore' -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION-f标志需要一个文件名作为下一个参数。
2013年

抱歉,已编辑。我是新来的,请多多包涵!
2013年

2
可以证明这在Mac-10.9上有效。花了我一段时间才能找到正确的版本,这就是为什么我在这里留下评论!
JohnAllen

2

这给您您想要的:

tar czvf $NAME-$VERSION.tar.gz $NAME-$VERSION --wildcards --exclude=.git --exclude=.gitignore

1

似乎您想过滤.git元目录,最简单的方法是使用--exclude-vcs排除版本控制系统目录:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude-vsc

我在Linux机器上使用了“ tar(GNU tar)1.27.1”,似乎mac的BSD General Command(非GNU版本)不支持此选项。


您确定这适用于Apple的tar吗?参见Apple的tar(1)手册页。它没有列出--exclude-vsc--exclude-vcs
jww

谢谢亲爱的@jww的提示。我已对答案进行了编辑以使其更有效。
凯文·泰拉尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.