不含父目录的zip文件

时间:2018-08-14 15:09:15

标签: r zip

当我运行这个

zip('C:\\path\\to\\dir\\out'
    , files = paste0('C:\\path\\to\\dir\\', c('one.xlsx', 'two.xlsx')))

它会压缩文件,但解压缩后会得到一个包含“ path”文件夹的文件夹,该文件夹包含“ to”文件夹等(完整目录路径)。因此,解压缩后,文件现在位于C:\\path\\to\\dir\\out\\path\\to\\dir\\中。

我如何压缩文件而没有生成的zip文件包含所有父目录?

我正在使用Windows 10

platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          4.2                         
year           2017                        
month          09                          
day            28                          
svn rev        73368                       
language       R                           
version.string R version 3.4.2 (2017-09-28)
nickname       Short Summer   

1 个答案:

答案 0 :(得分:2)

根据documentation,R zip函数使用R_ZIPCMD中设置的etc/Rcmd_environ。默认情况下,此选项设置为命令行zip Windows实用程序。 R函数提供输入参数 flags ,以将其他输入参数传递给基础命令行zip函数。说明手册 可以下载here标志。

-j标志仅允许存储文件名,而不是完整文件路径。

f_path <- 'C:\\path\\to\\dir\\out'
zip(f_path,
    files = paste0(f_path, c('one.xlsx', 'two.xlsx')),
    flags = '-r9Xj')

标志输入的-r9X部分是传递给基础实用程序功能的默认参数,并指定zip命令应递归搜索子目录,使用最大压缩率并删除折旧的文件字段。

仅使用Windows zip实用程序进行了测试。使用unix实用程序时,必要的标志可能有所不同。