r与正则表达式匹配的存档文件

时间:2014-02-05 16:57:56

标签: regex r

何仅存档与给定正则表达式模式匹配的文件?如果没有文件符合该模式,则不应将任何文件添加到存档中。

我需要获取与字符串匹配的目录的所有文件,该字符串是变量的值:

a <- "file-05-02-2014"

files <- list.files(path = getwd(), pattern = a)

在变量文件中,我获取了工作目录中的所有文件,而不仅仅是那些与字符串a的模式匹配的文件。

当我把字符串作为参数时,它很好。

files <- list.files(path = getwd(), pattern = "file-05-02-2014")

但是,我需要它来处理字符串变量而不是字符串文字。

更新

以下是整个背景: 我在zip函数中调用list.files。如果没有文件与模式匹配,则指定目录中的所有文件和目录都将添加到存档中。

a <- "file-05-02-2014"
zip(paste(getwd(), "myarchive.zip", sep="/"), 
   files=paste(getwd(), list.files(path = getwd(), pattern = a), sep="/"))

所以它与zip函数有关,而不是list.files函数。

解决方法是在调用zip

之前检查是否有符合该模式的文件
a <- "file-05-02-2014"
files.to.be.archived <- list.files(path = getwd(), pattern = a)

if(length(files.to.be.archived)>0)

   zip(paste(getwd(), "myarchive.zip", sep="/"), 
       files=paste(getwd(),files.to.be.archived, sep="/"))

任何简洁的方法吗?

1 个答案:

答案 0 :(得分:0)

您的代码没问题。您可以删除getwdpaste,因为您只使用工作目录。

a <- "file-05-02-2014"
files.to.be.archived <- list.files(pattern = a)
if(length(files.to.be.archived)) 
  zip("myarchive.zip", files = files.to.be.archived)