我正在尝试创建一个zip文件,并希望保留大部分目录结构,但不保留命令行定义的rootdir。我使用的命令是:
zip -r out.zip /foo/bar/
我希望通过bar进行递归并添加具有保留目录结构的所有文件(它确实如此)。但是我不想要' foo'成为创建的zip文件中的顶级目录。我希望bar成为顶级目录。
有没有简单的方法可以解决这个问题?我知道我可以在压缩之前更改目录以避免问题,但我正在寻找一个不需要这个的解决方案。
答案 0 :(得分:8)
我不相信zip有办法排除顶级目录。我认为你最好的选择是做一些事情: pushd / foo; zip -r out.zip ./bar; POPD;
但这正是你说你不想要的那种答案。
答案 1 :(得分:8)
这应该这样做:
cd /foo/bar/
zip -r ../out.zip *
存档将位于/foo/out.zip
答案 2 :(得分:4)
7z a -tzip out.zip -w foo/bar/.
答案 3 :(得分:-1)
如果有人偶然发现并且对上述解决方案不满意,下面是一个非常简单的解决方法,即不压缩长子目录。它涉及在C:/中临时创建一个文件夹,并在压缩后简单地删除它:
ZipFiles <- list.files(".../ZipFiles") # Insert your long subdirectory into .../
dir.create("C:/ZipFiles")
dir.create(".../FolderToBeZipped")
file.copy(from = ZipFiles,to = "C:/ZipFiles")
zip(".../FolderToBeZipped",
files = "C:/ZipFiles")
unlink("C:/ZipFiles",recursive = TRUE)
结果是...... / FolderToBeZipped.zip/ZipFiles /
好处是您在执行代码时不必位于子目录(或项目)中。