有没有办法可以编辑 zip 文件中的文件而无需先明确提取它们?

有没有办法可以编辑 zip 文件中的文件而无需先明确提取它们?

我有时需要更改 .zip 或 .jar 文件,因此我通常会将文件移动到/tmp,使用 提取所有文件unzip,编辑一些文件,然后重新压缩文件。这可行,但可能很繁琐。是否有一个实用程序或 shell 脚本可用于编辑 zip 文件中的文件,而无需明确调用unzipzip(即使它只是这些命令的包装器)?

答案1

在解压之前,您知道档案中文件的名称吗?您可以创建一个函数来解压/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.txtnot /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 文件吗?

答案2

Vim 支持透明地编辑 zip 文件内的文件。只需执行:

vim file.zip

然后你会看到 zip 存档中的文件列表。选择要编辑的文件,进行所需的更改,然后使用 :x 退出

如果vim回应:

无法进行更改,“可修改”已关闭

..只需运行:set modifiable:set ma(来源:https://stackoverflow.com/questions/5745506/vim-modifiable-is-off

答案3

简短的回答:不。

如果是包装纸,你调用这些命令。无论如何,我能想到的最好的方法是使用 打开文件file-roller,如果您在 X 环境中,则可能只需双击即可,具体取决于您的设置。然后您可以双击压缩文件以将其打开,然后可以编辑它:

$ file-roller b3.zip 

当你保存编辑的文件时,你应该看到这个对话框:

您也可以为此编写一个脚本,但是如果您的压缩档案包含多个文件,那么这会变得很复杂。如果您需要的话请告诉我,我可能会想出一些办法。

在此处输入图片描述

答案4

Directory Opus 12 文件管理器将允许您浏览 Zip,然后将编辑过的文件从另一个文件夹拖放到其中并覆盖要编辑的文件,它会即时完成所有操作。非常简单

相关内容