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

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

zip -r out.zip /foo/bar/ 

我希望它通过栏recursion并添加具有保存的目录结构(它所做的)的所有文件。 但是,我不希望“富”成为创build的zip文件中的顶级目录。 我希望酒吧成为顶级目录。

有没有什么简单的方法可以解决这个问题? 我意识到我可以改变目录前压缩,以避免这个问题,但我正在寻找一个解决scheme,不需要这个。

我不相信zip有排除顶层目录的方法。 我认为你最好的办法是做一些事情:pushd / foo; zip -r out.zip ./bar; POPD;

但是,这正是你说你不想要的答案。

这应该做到这一点:

 cd /foo/bar/ zip -r ../out.zip * 

档案将在/foo/out.zip

7z a -tzip out.zip -w foo/bar/.

如果有人绊倒了这一点,并不满意上述解决方案,这里遵循一个非常简单的解决方法,不压缩长子目录。 它涉及到在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/

好处是在执行代码时不需要在子目录(或项目)中。