ten*_*x2j 1 unix bash shell tar
我有一个tarball,我想删除其中除 pkgIndex.tcl 以外的所有 .tcl ,.bat,.log文件。
如果我做
tar --delete -f mytarball.tar --wildcards *{.tcl,.log,.bat}
Run Code Online (Sandbox Code Playgroud)
我的pkgIndex.tcl将被删除,如何将其作为例外添加到我的模式通配符中?
刚刚尝试
tar --delete -f mytarball.tar --wildcards *{.tcl,.log} --exclude=*pkgIndex.tcl
Run Code Online (Sandbox Code Playgroud)
和
tar --delete -f mytarball.tar --wildcards *{.tcl,.log} --exclude=pkgIndex.tcl
Run Code Online (Sandbox Code Playgroud)
无济于事...
看起来GNU tar在使用--delete时会忽略--exclude。
您可以tar tf mytarball.tar --wildcards *{.tcl,.log} | grep -v pkgIndex.tcl | tar --delete -f mytarball.tar -T -代替。这将列出与* .tcl或* .log匹配的所有文件,除 pkgIndex.tcl以外的所有文件都使用grep ,然后将列表通过管道传送回tar,这会将这些文件从tarball中删除。