압축 파일을 먼저 추출하지 않고 zip 파일 내부의 파일을 편집하는 방법이 있습니까? 몇 개의 파일을 편집 한

때로는 .zip 또는 .jar 파일을 변경해야하므로 일반적으로 파일을로 이동하고로 /tmp모든 파일을 추출 unzip하고 몇 개의 파일을 편집 한 다음 파일을 다시 압축합니다. 이것은 효과가 있지만 지루할 수 있습니다. 내가 명시 적으로 호출하지 않고 편집에 압축 파일의 파일 내부를 사용할 수있는 유틸리티 또는 쉘 스크립트 있는가 unzipzip(이 명령의 주위에 그것의 경우에도 단지 래퍼)?



답변

압축을 풀기 전에 아카이브의 파일 이름을 알고 있습니까? /tmpzip의 압축을 풀고 편집하고 새로 고치는 기능을 만들 수 있습니다 .

zipedit(){
    echo "Usage: zipedit archive.zip file.txt"
    unzip "$1" "$2" -d /tmp
    vi /tmp/$2 && zip -j --update "$1"  "/tmp/$2"
}

말하자면, 사용법은 다음과 같습니다.

zipedit myarchive.zip myfile.txt

이렇게하면 명명 된 파일의 압축이 풀리고 압축 파일이 저장 /tmp되고 편집 된 vi다음 경로에 “정크”하는 동안 파일이 다시 아카이브에 추가됩니다. 다음을 가정하여 .bash_profile에 추가하십시오 bash

편집 : 아래는 아카이브 내부의 하위 폴더와 함께 작동하는 버전입니다 … 참고, 폴더 이름 앞에 슬래시를 사용 myfolder/file.txt하지 마십시오 (예 : not /myfolder/file.txt). 아카이브에 존재하지 않는 파일을 편집하면 자동으로 생성됩니다. 또한 zip 파일의 절대 경로로 작동하는지 확실하지 않습니다. 친척과 함께하는 것이 가장 좋습니다.

zipedit(){
    echo "Usage: zipedit archive.zip folder/file.txt"
    curdir=$(pwd)
    unzip "$1" "$2" -d /tmp
    cd /tmp
    vi "$2" && zip --update "$curdir/$1"  "$2"
    # remove this line to just keep overwriting files in /tmp
    rm -f "$2" # or remove -f if you want to confirm
    cd "$curdir"
}

질문 주셔서 감사합니다. 아마 이것도 사용하게 될 것입니다!

또 다른 편집 : 테스트되지 않은,하지만 난 읽었 vimemacs것 모두 편집 jar 파일을 직접?


답변

Vim은 zip 파일 내의 파일을 투명하게 편집 할 수 있도록 지원합니다. 그냥 실행하십시오 :

vim file.zip

zip 보관 파일 내의 파일 목록이 표시됩니다. 편집하려는 것을 선택하고 원하는 것을 변경하고 : x로 종료하십시오.

vim응답하는 경우 :

변경할 수 없습니다. ‘수정 가능’이 꺼져 있습니다.

.. 그냥 실행 :set modifiable하거나 :set ma(출처 : https://stackoverflow.com/questions/5745506/vim-modifiable-is-off )


답변

짧은 대답 : NO.

이 래퍼 있다면, 당신은 하는 이 명령을 호출. 어쨌든, 내가 생각할 수있는 최선의 방법은 file-rollerX 환경에있는 경우 설정에 따라 간단한 더블 클릭으로 작동 할 수있는을 사용하여 파일을 여는 것입니다 . 그런 다음 압축 파일을 두 번 클릭하여 연 다음 편집 할 수 있습니다.

$ file-roller b3.zip

편집 한 파일을 저장하면 다음 대화 상자가 나타납니다.

이를 위해 스크립트를 만들 수도 있지만 여러 파일이 포함 된 압축 아카이브를 사용하면 복잡해집니다. 그것이 당신이 필요로하는 것이라면 알려 주시면 뭔가를 요리 할 수 ​​있습니다.


답변

짧은 pedantic 답변; 아니. 압축에 대해 생각하면 중복성을 사용하여 내부의 파일을 줄이므로 편집하면 아카이브 내의 전체 파일 (아카이브)이 변경됩니다.

이론적이지 않고 실용적이면서도 “수동으로 압축을 풀고 압축하고 싶지는 않습니다.”사용할 수있는 도구가 있습니다. Linux의 ark 는 내가 사용한 것입니다. 또한 임시 파일보다 더 많은 작업이긴하지만 fuse-zip을 사용 하여 아카이브를 마운트 할 수도 있습니다.


답변

zip(쉬운 참조를위한 온라인 버전 : http://linux.die.net/man/1/zip ) 매뉴얼 페이지에 따르면 , zip명령에는 -u다음과 같이 설명 하는 플래그가 있습니다.

Zip 아카이브의 기존 항목이 이미 Zip 아카이브의 버전보다 최근에 수정 된 경우에만 Zip 아카이브의 기존 항목을 교체 (업데이트)하십시오.


답변

Directory Opus 12 파일 관리자를 사용하면 Zip을 탐색 한 다음 편집 한 파일을 다른 폴더에서 끌어다 놓아 편집하려는 파일을 덮어 쓰면 즉시 작업이 수행됩니다. 아주 쉽게


답변

중첩 된 zip 파일을 탐색하고 편집하기 위해 스톡 zip.vim을 확장하는 Vim 플러그인을 작성했습니다.

https://github.com/lbrayner/vim-rzip