2016-11-23 196 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'中。 –