https://www.gnu.org/software/tar/manual/html_node/delete.html#delete
А за раз можно удалить несколько файлов? Можно, если в их именах нет пробелов:
Shell
Папку foo с файлами создадим:
$ rm -r foo
$ mkdir foo
$ touch foo/bar_0
$ touch foo/bar_1
$
Shell
$ tar --create --file=foo.tar foo
$ tar tvf foo.tar
drwxr-xr-x user/user 0 2024-12-19 02:44 foo/
-rw-r--r-- user/user 0 2024-12-19 02:44 foo/bar_0
-rw-r--r-- user/user 0 2024-12-19 02:44 foo/bar_1
$
Shell
$ sudo tar --delete --file=foo.tar foo/bar_0 foo/bar_1
$
$ tar tvf foo.tar
drwxr-xr-x user/user 0 2024-12-19 02:44 foo/
$
Ну и эксперименты со временем тоже указывают на это.This operation will rewrite the archive.
...Но если в именах членов пробел, всё, туши свет. Зараз ничё не удалить. То есть идея какая. Создаём файл-список list.txt членов, а потом с этим файлом работаем. Создание list.txt опускаем:
Shell
$ mkdir foo
$ touch foo/bar
$ touch "foo/ba r"
$
$ tar --create --file=foo.tar foo
$
$ tar tvf foo.tar
drwxr-xr-x user/user 0 2024-12-19 02:59 foo/
-rw-r--r-- user/user 0 2024-12-19 02:59 foo/ba r
-rw-r--r-- user/user 0 2024-12-19 02:59 foo/bar
$
$ cat list.txt
'foo/ba r'
'foo/bar'
$
Shell
$ tar --delete --file=foo.tar $(echo $(cat list.txt))
tar: 'foo/ba: Не найден в архиве
tar: r': Не найден в архиве
tar: 'foo/bar': Не найден в архиве
tar: Завершение работы с состоянием неисправности из-за возникших ошибок
$
Shell
$ cat list.txt
"foo/ba r"
"foo/bar"
$
По одиночке можно, конечно поудалять, используя, например, файл:
Shell
$ cat list.txt
foo/ba r
foo/bar
$
$
$ cat list.txt | while read LINE; do tar --delete --file=foo.tar "$LINE"; done
$