2014-02-05 48 views
0

Ho只歸檔與給定正則表達式模式匹配的文件嗎?如果沒有文件滿足該模式,則不應將任何文件添加到存檔中。r歸檔文件匹配正則表達式

我需要得到一個字符串,它是一個變量的值匹配目錄下的所有文件:

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

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

在變量文件,我得到了工作目錄中的所有文件和不僅僅是匹配字符串a的模式的那些。

當我只是把字符串作爲參數,它是worokin罰款。

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

但是,我需要它使用字符串變量而不是字符串文字。

UPDATE:

這裏是整個來龍去脈: 我打電話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函數。

一個解決辦法是檢查是否有符合調用拉鍊

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="/")) 

任何簡潔的方式做到這一點之前,任何模式的文件?

+0

可能會使用'glob2rx' – dickoa

+0

我試過了......但它不工作! ...我添加了更多的去軌跡以反映我的案例的上下文 – massinissa

+0

如果您希望人們提供幫助,您需要添加更多細節以及需要匹配的文件類型示例。 – dickoa

回答

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)