R中的文件扩展名重命名

File extension renaming in R

我只是想将文件扩展名更改为 .doc。我正在尝试下面的代码,但它不起作用。怎么来的?我正在使用 here

中的说明
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 

更简单。在这里,我们首先创建 10 个文件(在 shell 中):

$ 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)并将 all 文件重命名为一次从旧名字到新名字。

这将为每个隐式重命名回显 TRUE

edd@max:/tmp/filerename$ Rscript renameFiles.R 
 [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
edd@max:/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
edd@max:/tmp/filerename$ 

编辑: 这是在 R 中做所有事情的更明确的演练:

edd@max:/tmp/filerename/new$ ls                    ## no files here
renameFiles.R
edd@max:/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)
edd@max:/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" 
edd@max:/tmp/filerename/new$