답변:
GNU tar에는 --delete
오늘날에도 아카이브와 작동 하는 옵션이 있습니다.
예를 들어 다음과 같이 사용하십시오.
tar -vf yourArchive.tar --delete your/path/to/delete
주의 : 대부분 의 자기 테이프 매체 에서는 작동 하지 않을 것입니다. 그러나 tar
파이프에서 작업하는 데 아무런 문제가 없으므로 임시 tar 파일을 사용하고 그 후에 테이프를 덮어 쓸 수 있습니다. 압축 파일에서도 작동하지 않으므로 파일을 압축 해제해야합니다.
또한 tar 아카이브의 (선별 적으로) 패킹 된 선형 특성으로 인해 작업이 다소 느려질 수 있습니다.
gtar --delete
.
-T
은 (와 --delete
) 작동하며 --wildcards
파일 이름 대신 패턴을 사용할 수 있으므로 패턴이 포함 된 임시 파일을 만들고을 사용하십시오 unxz < file.tar.xz | tar --wildcards --delete -T patternfile | xz > file2.tar.xz
. 전체 정규 표현식을 수행하지는 않지만 (필요한 경우 tar -t
파일 이름 목록을 사용하여 삭제하여 삭제) 파일 이름 일치 패턴 만 수행하십시오.
(내가 편집 된 질문을 오해 한 것처럼 편집 됨)
전체 파일을 추출, 삭제 및 다시 압축하는 것이 가장 좋습니다.
unxz < foobar-old.tar.xz | tar --delete foo/bar | xz > foobar-new.tar.xz
tar에서 직접 파일을 삭제할 수 없습니다.
tar는 원래 임의 탐색을 잘 수행하지 않는 테이프 드라이브 용 스트림입니다. 이론적으로 디스크 파일 시스템에서 구멍을 뚫고 / 남은 파일을 다시 쓸 수 있으며, 압축을 사용하면 포인트가 전부는 아니더라도 대부분은 ot니다. 압축 방법은 파일에서 이전에 발생한 내용에 크게 의존합니다. 이를 위해서는 압축 방법과 tar 파일 형식에 대한 매우 자세한 지식이 필요합니다. 그것은 아무도 그것을 귀찮게하지 않을 정도로 복잡합니다. 파일을 보관하고 무시하는 것이 더 저렴합니다.
이 기능이 필요한 경우 tar는 원하는 것이 아닐 것입니다.
--wildcards
도움이 ... ./
하지만 패턴의 시작 부분 에 포함해야했습니다 ...
manual 에 따르면 파일 이름 목록을 전달하여 파일 이름 tar
만 추출 할 수 있습니다. 예를 들면 다음과 같습니다.
$ tar --file archive.tar --list
foo
bar
baz
$ tar --file archive.tar --extract foo