如何创建没有整个目录结构的zip文件

时间:2012-03-14 21:22:40

标签: linux zip

我正在尝试创建一个zip文件,并希望保留大部分目录结构,但不保留命令行定义的rootdir。我使用的命令是:

zip -r out.zip /foo/bar/

我希望通过bar进行递归并添加具有保留目录结构的所有文件(它确实如此)。但是我不想要' foo'成为创建的zip文件中的顶级目录。我希望bar成为顶级目录。

有没有简单的方法可以解决这个问题?我知道我可以在压缩之前更改目录以避免问题,但我正在寻找一个不需要这个的解决方案。

4 个答案:

答案 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 /

好处是您在执行代码时不必位于子目录(或项目)中。