Удалить файл в tar, с подстановочным знаком и исключением - PullRequest
1 голос
/ 14 октября 2010

У меня есть tarball, и я хочу удалить все файлы .tcl, .bat, .log , кроме pkgIndex.tcl в нем.

, если я сделаю

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

Безрезультатно ...

1 Ответ

4 голосов
/ 14 октября 2010

Похоже, GNU tar игнорирует --exclude при использовании --delete.

Вместо этого вы можете сделать tar tf mytarball.tar --wildcards *{.tcl,.log} | grep -v pkgIndex.tcl | tar --delete -f mytarball.tar -T -. Это выведет список всех файлов, соответствующих * .tcl или * .log, grep для всего , но pkgIndex.tcl, и перенаправит список обратно в tar, который удалит эти файлы из tarball.

...