说我要添加的文件file.txt
来foo.zip
,我只是做zip -u foo.zip file.txt
。
但是在 zip 文件中已经存在一个带有路径的文件夹foo.zip/very/many/paths/
(相对于 zip 文件)。
我将如何添加file.txt
到 zip 文件中,以便它在 zip 文件中的位置是foo.zip/very/many/paths/file.txt
?
我可以先创建所需的目录结构,但没有更简单的方法吗?
我通常会这样做:
$ls 文件.txt 压缩包 $ mkdir 非常 $ mkdir 非常/很多 $ mkdir 非常/许多/路径 $ cp file.txt 非常/许多/路径 $ zip -u foo.zip very/many/paths/file.txt $ rm -rf 非常
我建议的一种方法是解压缩、移动文件,然后重新压缩。
举个例子,假设我们有这个 zip 文件:
Archive: foo.zip
Length Date Time Name
--------- ---------- ----- ----
0 2013-01-30 14:38 very/
0 2013-01-30 14:38 very/many/
0 2013-01-30 14:38 very/many/paths/
0 2013-01-30 14:38 very/many/paths/foo.txt
0 2013-01-30 14:38 file.txt
--------- -------
0 5 files
Run Code Online (Sandbox Code Playgroud)
要解压文件,我们首先创建一个目录/tmp
。然后我们将执行以下操作:
foo.zip
到我们的临时目录d=$(mktemp -t -d foo.zip.XXXXXX) && unzip -d $d foo.zip
$d
)mv ${d}/file.txt ${d}/very/many/paths/
cd
到临时目录并将所有内容重新压缩到新的 zip 文件中( cd $d && zip -r foo.zip ./* )
mv ${d}/foo.zip ./
rm -rf ${d}