【问题标题】:Creating zip file from folders从文件夹创建 zip 文件
【发布时间】:2011-01-07 10:02:59
【问题描述】:

我想知道是否可以从文件夹创建一个 zip 文件。我有一个文件夹,在这个文件夹中有四个文件夹,里面有不同类型的文件。现在我想用它们的文件递归压缩这四个文件夹。

我尝试了save()gzip(),但他们没有做我想做的事。

有人给我提示吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    确定 tar 命令的范围。虽然它不是 zip,但压缩的 tar 文件也一样好。

    tarfile <- 'newfile.tgz'
    tar(tarfile,'/path/of/dir/to/tar/up',compression='gzip')
    

    【讨论】:

    • 我忘了说 tar 也是跨平台的。
    • 感谢您的回答。听起来不错,但就我而言,我需要 .zip。但我牢记这一点:)
    【解决方案2】:

    Omegahat 的 Rcompression 包可以做到这一点。这是一个最小的例子:

    library(Rcompression)
    d <- "C:/my_data"
    files <- list.files(d, recursive=TRUE)
    zip("myarchive.zip", files=paste(d, files, sep="/"), altNames=files)
    

    更多示例请参见?zip

    【讨论】:

    • 感谢您的回复。我会试试这个。
    • 这个例子对我的帮助最大。谢谢!
    • 使用file.path 而不是paste(..., sep = "/")
    • 还有一个 base::zip 函数,它是一个外部 zip 命令的包装器
    • base::zip 函数需要在 linux 操作系统中设置 R_ZIPCMD。在 Windows 中不需要它。跨平台开发的注意事项
    【解决方案3】:

    您可以在odfWeave package 的来源中寻找提示。

    如果你加载库并输入odfWeave,你会得到源代码,它不会太长,并且通过系统调用实现了压缩和解压缩。

    从这些来源,您可以执行以下操作:

    filename = '' # set archive filename
    loc = ''      # set location, if not done before
    setwd(loc)
    zipCmd = paste("zip -r ", filename, " .", sep='')
    system(zipCmd, invisible = TRUE) 
    

    当然,必须安装zip。

    【讨论】:

    • 感谢您的回复。我会试试这个。
    猜你喜欢
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多