Linux의 zip 아카이브에서 단일 파일 제거 파일을 제거하고 싶습니다.

zip 아카이브 ( -j -r플래그 가있는 스크립트에서 자동으로 생성됨 )가 있으며 단일 파일을 제거하고 싶습니다. 나는 문서화 된대로 시도했다.

zip -d "picture_43_9.jpg" gallery.zip

하지만이 오류가 발생합니다 :

zip warning: picture_43_9.jpg not found or empty
zip error: Nothing to do! (picture_43_9.jpg)

어쨌든, 거기에 있다 아카이브 내부의 이러한 파일과 비어되지 않습니다 :

unzip -l .../gallery.zip | grep -i 43_9.jpg
1477092  2013-05-22 14:23   picture_43_9.jpg

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?



답변

인수가 바뀌 었습니다. 이 시도:

zip -d gallery.zip "picture_43_9.jpg"

로부터 우편 (1) 매뉴얼 페이지

-d
--delete
Zip 보관 파일에서 항목을 제거 (삭제)합니다. 예를 들면 다음과 같습니다.

zip  -d  foo  foo/tom/junk  foo/harry/\*  \*.o

항목 foo/tom/junk,로 시작하는 foo/harry/모든 파일 및 .o(경로로) 끝나는 모든 파일을
제거합니다 . 그래서, 그 쉘 경로 확장은 백 슬래시 억제 된 참고 지퍼 있도록 별표를 볼 수있는 지퍼 의 내용에 일치하도록 우편 대신 현재 디렉토리의 내용을 아카이브. 백 슬래시는 MSDOS 기반 플랫폼에서 사용되지 않습니다. 인용 부호를 사용하여 별표를 이스케이프 처리 할 수도 있습니다.

zip -d foo foo/tom/junk "foo/harry/*" "*.o"

쉘이 와일드 카드를 확장하는 시스템에서 별표를 이스케이프하지 않으면 별표가 현재 디렉토리의 파일 목록으로 변환되고 해당 목록은 아카이브에서 항목을 삭제하는 데 사용됩니다.

MSDOS에서 -dzip 아카이브의 이름과 일치 할 때 대소 문자를 구분합니다 . MSDOS 시스템에서 PKZIP로 압축 된 경우 파일 이름을 대문자로 입력해야합니다. (우리는 경로가 대소 문자를 구분하지 않는 시스템 에서이 대소 문자를 구분하지 않는 것으로 간주했지만, 아카이브가 대소 문자가 중요하고 아카이브에 아카이브에
별도의 파일 Bar과 두 bar파일을 모두 포함 할 수있는 시스템에서 아카이브를 가져올 수 있습니다 .) 그러나 새로운 옵션 – ic 는 아카이브에서 대소 문자를 무시합니다.


답변