同样但不同!使用R重命名多个文件

3

我是R编程的新手,现在正在尝试编写代码以重命名同一文件夹中的一系列pdf文件:

Letter131.pdf
Letter132.pdf
Letter133.pdf 

我需要改名的文件大约有1000个。

我希望将这些文件重命名,使第二个和第三个数字之间有一个“_”:

Letter13_1.pdf
Letter13_2.pdf
Letter13_3.pdf

我发现了各种重命名多个文件的答案,但不幸的是我无法调整它们使其工作。

我找到的一个示例是这样的:

file_names <- list.files(pattern="*.pdf")
sapply(file_names, FUN = function(eachPath){
  file.rename(from = eachPath, to = sub(pattern = "Letter13$.pdf", paste0("Letter13_$"), 1:3, eachPath))
})

有人可以帮我解决这个问题吗?

(涉及IT技术领域)
1个回答

3

file.rename是矢量化的,这里不需要使用循环:

## insert _ using grouping pattern
TO <- sub('(.*)([0-9][.]pdf)','\\1_\\2',file_names)
## rename a vector 
file.rename(file_names , TO)

模式使用示例:

file_names <- c("Letter131.pdf","Letter132.pdf","Letter133.pdf")
sub('(.*)([0-9][.]pdf)','\\1_\\2',file_names)  
## [1] "Letter13_1.pdf" "Letter13_2.pdf" "Letter13_3.pdf"

非常感谢!非常有效。只有一个问题:如果我想将代码用于多达1000个不同的PDF文件,我是否将值[0-9]更改为[0-1000]? - LH01
不清楚。这段代码将在最后一个数字之前插入“_”(即使是对于1000个文件)。 - agstudy
抱歉我的误解。谢谢你的帮助 - 真是太棒了。 - LH01

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接