代码之家  ›  专栏  ›  技术社区  ›  IceCreamToucan

不包含父目录的zip文件

zip r
  •  0
  • IceCreamToucan  · 技术社区  · 8 年前

    当我运行这个

    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\\ .

    如果没有包含所有父目录的压缩文件,我如何压缩文件?

    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 回复  |  直到 8 年前
        1
  •  3
  •   icj    8 年前

    根据 documentation ,R zip函数利用 R_ZIPCMD etc/Rcmd_environ . 设置为命令行 zip 默认情况下为windows实用程序。R函数提供输入参数 将其他输入参数传递给底层命令行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实用程序时,必需的标志可能不同。