linux如何将文件添加到zip文件中的特定文件夹

时间:2012-02-15 07:59:54

标签: linux zip

我知道如何将文件添加到zip文件中的根文件夹中:

  

zip -g xxx.apk yyy.txt

但我不知道如何在zip文件中指定特定文件夹

4 个答案:

答案 0 :(得分:30)

如果您需要将文件添加到与原始目录层次结构相同的文件夹中,则只需添加完整路径即可:

zip -g xxx.zip folder/file

否则,最简单的方法是在临时目录中的zip文件中创建所需的相同布局。

答案 1 :(得分:9)

要详细说明一年前的@Ignacio Vazquez-Abrams答案,您可以使用较低级别的库,例如Python附带的库:

#!/bin/bash
python -c '
import zipfile as zf, sys
z=zf.ZipFile(sys.argv[1], "a")
z.write(sys.argv[2], sys.argv[3])
z.close()
' myfile.zip source/dir/file.txt dir/in/zip/file.txt

这将打开myfile.zip并在文件系统中将source/dir/file.txt添加为zip文件中的dir/in/zip/file.txt

答案 2 :(得分:3)

Info-ZIP不能这样做。您需要使用对zip文件具有较低级别访问权限的语言编写脚本或程序。

答案 3 :(得分:2)

我已经花了一点@“那个其他人”的解决方案

转到控制台,按ctrl + x,ctrl + e,粘贴

( cat <<-'EOF'
#!/bin/bash
if [ $# -lt 3 ]; then
echo my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml
exit
fi

python -c '
import zipfile as zf, sys
z=zf.ZipFile(sys.argv[1], "a")
z.write(sys.argv[2], sys.argv[3])
z.close()' $1 $2 $3
EOF
) > /tmp/zip-extend && chmod +x /tmp/zip-extend

然后运行/tmp/zip-extend my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml

示例:

cd /tmp
touch first_file.txt
zip my_zip.zip first_file.txt
unzip -l my_zip.zip
mkdir -p your/existing
touch your/existing/file_to_add.xml
/tmp/zip-extend my_zip.zip your/existing/file_to_add.xml directory_in_zip/file_to_add.xml
unzip -l my_zip.zip
cd -

结果:

Archive:  my_zip.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2013-12-17 15:24   first_file.txt
        0  2013-12-17 15:24   directory_in_zip/file_to_add.xml
---------                     -------
        0                     2 files