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$
我只是想将文件扩展名更改为 .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$