有时我需要对.zip或.jar文件进行更改,因此通常将文件移动到/tmp
,使用提取所有文件unzip
,编辑一些文件,然后重新压缩文件。这行得通,但可能很乏味。是否有实用程序或Shell脚本可用于编辑zip文件中的文件而无需显式调用unzip
and zip
(即使它只是这些命令的包装器)?
有时我需要对.zip或.jar文件进行更改,因此通常将文件移动到/tmp
,使用提取所有文件unzip
,编辑一些文件,然后重新压缩文件。这行得通,但可能很乏味。是否有实用程序或Shell脚本可用于编辑zip文件中的文件而无需显式调用unzip
and zip
(即使它只是这些命令的包装器)?
Answers:
在解压缩文件之前,您是否知道档案中的文件名?您可以使用以下功能解压缩/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
... 添加到您的.bash_profile
编辑:以下是可与存档中的子文件夹一起使用的版本...注意,请勿在文件夹名称前使用斜杠(即,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文件直接?
Vim支持透明地编辑zip文件中的文件。只需执行:
vim file.zip
然后您会看到zip存档中的文件列表。选择您要编辑的内容,更改所需内容,然后使用:x退出
如果vim
回应:
无法进行更改,“可修改”已关闭
..只需运行:set modifiable
或:set ma
(来源:https : //stackoverflow.com/questions/5745506/vim-modifiable-is-off)
根据的手册页zip
(在线版本,以方便参考:http : //linux.die.net/man/1/zip),该zip
命令具有一个-u
标志,它描述为:
仅在修改了比zip归档文件中已有的版本最近的情况下,才替换(更新)zip归档文件中的现有条目。
您可以使用标准的KDE文本编辑器,例如: