You can remove members from an archive by using the --delete
option. Specify the name of the archive with --file
(-f) and then specify the names of the members to be deleted;
if you list no member names, nothing will be deleted. The
--verbose option will cause tar to print the names
of the members as they are deleted. As with --extract, you
must give the exact member names when using ‘tar --delete’.
--delete will remove all versions of the named file from the
archive. The --delete operation can run very slowly.
Unlike other operations, --delete has no short form.
This operation will rewrite the archive. You can only use
--delete on an archive if the archive device allows you to
write to any point on the media, such as a disk; because of this, it
does not work on magnetic tapes. Do not try to delete an archive member
from a magnetic tape; the action will not succeed, and you will be
likely to scramble the archive and damage your tape. There is no safe
way (except by completely re-writing the archive) to delete files from
most kinds of magnetic tape. See Media.
To delete all versions of the file blues from the archive
collection.tar in the practice directory, make sure you
are in that directory, and then,
$ tar --list --file=collection.tar
blues
folk
jazz
rock
practice/blues
practice/folk
practice/jazz
practice/rock
practice/blues
$ tar --delete --file=collection.tar blues
$ tar --list --file=collection.tar
folk
jazz
rock
$
The --delete option has been reported to work properly when
tar acts as a filter from stdin to stdout.
Published under the terms of the GNU General Public License