항아리를 추출하고 다시 만들지 않고도 Jar / war에서 파일을 빠르게 삭제할 수있는 방법이 있습니까?


105

그래서 jar / war 파일에서 파일을 제거해야합니다. 나는 "jar -d myjar.jar file_I_donot_need.txt"와 같은 것이 있기를 바라고 있었다.

하지만 지금 당장 내 Linux 명령 줄 (WinRAR / Winzip 또는 이에 상응하는 Linux를 사용하지 않고)에서이 작업을 수행하는 유일한 방법은 다음과 같습니다.

  • "jar -xvf"를 실행하고
    전체 Jar 파일을 추출 합니다.
  • 필요하지 않은 파일 제거
  • "jar -cvf"를 사용하여 jar 파일을 Rejar합니다.

더 짧은 길이 있다고 말해주세요.


3
"jar"는 단지 zip 파일이기 때문에 superuser.com에서 더 나은 행운을 누릴 수있을 것 입니다.
Kirk Woll

전체 프로세스를 래핑하는 셸 스크립트를 작성할 수도 있습니다. 같은 것./myscript.sh -d <list of files>
Favonius 2010

답변:


202
zip -d file.jar unwanted_file.txt

jar는 결국 zip 파일입니다. 압축 해제 / 재 압축보다 확실히 훨씬 빠릅니다.


3
대신 p7zip을 설치하는 경우가 더 zip7z d -tzip file.jar dir/unwanted_file.txt
많으며이

@martona 다음과 같은 오류가 발생합니다. zip 오류 : Zip 파일 구조
Goaler444

@ Goaler444 같은 오류가 있었지만 7z를 lapo가 제안한대로 사용하면 저에게 효과적이었습니다.
yby

하위 항아리 또는 그랜드 하위 항아리에서 파일을 삭제하는 방법은 무엇입니까?

5
: 당신이 항아리에서 폴더를 삭제하려면, 반드시 원치 않는 폴더에 후행 슬래시가 확인zip -d file.jar unwanted_folder/
마틴 Woolstenhulme

1

Java에서는 삭제할 항목을 제외하고 jar의 모든 항목을 복사 할 수 있습니다. 즉, 복사본을 만들어야하지만 개별 파일을 만들 필요는 없습니다.

당신은 이것을 할 수 있습니다

  • 새 항아리를 만듭니다.
  • 당신이 가진 항아리를 반복
  • 한 jar에서 다른 jar로 항목을 복사하고 원하는 파일을 건너 뜁니다.
  • 원하는 경우 원래 병을 닫고 교체하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.