Знаете ли вы имя файла в архиве перед его разархивированием? Вы можете сделать функцию, чтобы распаковать /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 напрямую?