2010-10-14 142 views
0

我有一个tarball,我想删除所有.tcl,.bat,.log文件,除了 pkgIndex.tcl。在tar中删除文件,使用通配符和异常

,如果我做

tar --delete -f mytarball.tar --wildcards *{.tcl,.log,.bat} 

我将pkgIndex.tcl将被删除了,怎么把那个在我的模式通配符例外?

刚试过

tar --delete -f mytarball.tar --wildcards *{.tcl,.log} --exclude=*pkgIndex.tcl 

tar --delete -f mytarball.tar --wildcards *{.tcl,.log} --exclude=pkgIndex.tcl 

无济于事......

+2

也许有点明显,但你试过'--exclude'选项吗?这也应该在'superuser.com'上。 – Wolph 2010-10-14 01:59:30

+0

哦,好的,。我坏..我忽略了一个.. – tensaix2j 2010-10-14 02:02:19

+0

刚刚尝试过,没有工作,它仍然被删除。 – tensaix2j 2010-10-14 02:17:47

回答

3

看起来当您使用--delete喜欢的GNU tar忽略--exclude。

您可以改为tar tf mytarball.tar --wildcards *{.tcl,.log} | grep -v pkgIndex.tcl | tar --delete -f mytarball.tar -T -。这将列出匹配* .tcl或* .log的所有文件,grep的所有内容但是 pkgIndex.tcl,并将列表重新导入到tar中,这将从tarball中删除这些文件。