Знаете ли вы имя файла в архиве перед его разархивированием? Вы можете создать функцию для распаковки /tmp
, редактирования и обновления zip-файла:
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
не используйте /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" }
Спасибо за вопрос. Я, вероятно, в конечном итоге использовать этот тоже!
Другое редактирование: не проверено, но я прочитал это, vim
и emacs
оба будут редактировать файлы JAR напрямую?