2016-11-23 119 views
0

我只是試圖將文件擴展名改爲.doc。我正在嘗試下面的代碼,但它不起作用。怎麼來的?我使用的是從hereR中的文件擴展名重命名

startingDir<-"C:/Data/SCRIPTS/R/TextMining/myData" 

filez<-list.files(startingDir) 

sapply(filez,FUN=function(eachPath){ 
    file.rename(from=eachPath,to=sub(pattern =".LOG",replacement=".DOC",eachPath)) 
}) 

說明我得到的輸出是:

DD17-01.LOG DD17-02.LOG DD17-03.LOG DD17-4.LOG DD17-5.LOG DD37-01.LOG DD37-02.LOG DD39-01.LOG DD39-02.LOG DD39-03.LOG 
     FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE 

回答

3

可以更加方便。在這裏,我們首先創建10個文件(中殼):

$ for i in 0 1 2 3 4 5 6 7 8 9; do touch file${i}.log; done 

然後R中真的是隻有三個矢量操作:

files <- list.files(pattern="*.log") 
newfiles <- gsub(".log$", ".doc", files) 
file.rename(files, newfiles) 

我們把文件名,做全部改造(替換尾隨.log.doc),並將全部文件從舊名稱更名爲新名稱。

這將回顯TRUE每個隱含重命名:

[email protected]:/tmp/filerename$ Rscript renameFiles.R 
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
[email protected]:/tmp/filerename$ ls 
file0.doc file1.doc file2.doc file3.doc file4.doc file5.doc 
file6.doc file7.doc file8.doc file9.doc renameFiles.R 
[email protected]:/tmp/filerename$ 

編輯:這裏是一個更明確的演練做R中的一切:

[email protected]:/tmp/filerename/new$ ls     ## no files here 
renameFiles.R 
[email protected]:/tmp/filerename/new$ cat renameFiles.R  ## code we will run 

options(width=50) 
ignored <- sapply(1:10, function(n) write.csv(n, file=paste0("file", n, ".log"))) 
files <- list.files(pattern="*.log") 
print(files) 

newfiles <- gsub(".log$", ".doc", files) 
file.rename(files, newfiles) 

files <- list.files(pattern="*.doc") 
print(files) 
[email protected]:/tmp/filerename/new$ Rscript renameFiles.R ## running it 
[1] "file10.log" "file1.log" "file2.log" 
[4] "file3.log" "file4.log" "file5.log" 
[7] "file6.log" "file7.log" "file8.log" 
[10] "file9.log" 
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
[10] TRUE 
[1] "file10.doc" "file1.doc" "file2.doc" 
[4] "file3.doc" "file4.doc" "file5.doc" 
[7] "file6.doc" "file7.doc" "file8.doc" 
[10] "file9.doc" 
[email protected]:/tmp/filerename/new$ 
+0

而且 - 我不明白在「.LOG $」的情況下爲$。它的目的是什麼? – val

+1

閱讀有關正則表達式的文檔,它表示_ending_在'.log'中。 –

相關問題