我正在尝试使用zip工具创建zip存档。 例如:
zip -r test.zip /home/folder1/folder2/folder3/*
它使用与命令完全相同的目录结构创建存档。 我知道,有选项-j,但它完全忽略了目录结构。 在folder3中是我想要的另一个文件夹zip。 所以我需要一些与
相同的东西cd /home/folder1/folder2/folder3/
zip -r test.zip *
但是我无法使用它,因为我将在CGI脚本中使用它,我不能像我想要的那样更改文件夹。
感谢您的建议,对不起我的英语。
答案 0 :(得分:0)
如果无法创建子shell以使用(cd /home/folder1/folder2/folder3/ && zip -r test.zip *)
执行zip操作,则可以将指定目录中的文件复制到当前目录,在for
循环中选择它们,然后执行zip -r
。
cp -rp /home/folder1/folder2/folder3/* .
for file in /home/folder1/folder2/folder3/*; do
echo "${file#/home/folder1/folder2/folder3/}"
done | xargs zip -r test.zip
然后用
删除它们for file in /home/folder1/folder2/folder3/*; do
rm -r "${file#/home/folder1/folder2/folder3/}"
done
如果您当前目录中的文件夹和文件名与/home/folder1/folder2/folder3
中的名称相同,则此解决方案会出现问题。
您可以使用
测试是否存在任何具有相同名称的文件夹/文件for i in /home/folder1/folder2/folder3/*; do
[[ ! -e ${i#/home/folder1/folder2/folder3/} ]] || echo "$i exists"
done