R中的文件扩展名重命名

val*_*val 6 r file-rename text-mining

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

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))
})
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

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 
Run Code Online (Sandbox Code Playgroud)

Dir*_*tel 11

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

$ for i in 0 1 2 3 4 5 6 7 8 9; do touch file${i}.log; done
Run Code Online (Sandbox Code Playgroud)

然后在 R 中它实际上只是三个向量化操作:

files <- list.files(pattern="*.log")
newfiles <- gsub(".log$", ".doc", files)
file.rename(files, newfiles)
Run Code Online (Sandbox Code Playgroud)

我们读到的文件名,做改造上所有的人都在一次(更换尾部.log.doc),并更名为所有文件从旧名称到新名称一次。

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

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$ 
Run Code Online (Sandbox Code Playgroud)

编辑:这是在 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$ 
Run Code Online (Sandbox Code Playgroud)

  • 阅读有关正则表达式的文档,它意味着“.log”中的_ending_。 (2认同)
  • 确保 `list.files(wd,pattern = "\\.log", full.names = TRUE) 中的 `full.names = TRUE`,否则 `file.rename` 将找不到文件,您将以“file.rename(old, new)”结尾为“FALSE FALSE..” (2认同)