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