R:将特定目录中的大量文件重命名为四位数格式

R:将特定目录中的大量文件重命名为四位数格式,r,rename,R,Rename,让我们看一张图片列表: destination <- "C:/Users/uzytkownik/Pictures/image/" myfiles_jpg <- list.files(path = destination, pattern = "jpg", full.names = TRUE) ### let's see head(myfiles_jpg) [1] "C:/Users/uzytkownik/Pictures/image/1.jpg" "C:/Users/uzyt

让我们看一张图片列表:

destination <- "C:/Users/uzytkownik/Pictures/image/"
myfiles_jpg <- list.files(path = destination, pattern = "jpg",  full.names = TRUE)
### let's see
head(myfiles_jpg)
[1] "C:/Users/uzytkownik/Pictures/image/1.jpg"    "C:/Users/uzytkownik/Pictures/image/10.jpg"  
[3] "C:/Users/uzytkownik/Pictures/image/100.jpg"  "C:/Users/uzytkownik/Pictures/image/1000.jpg"
[5] "C:/Users/uzytkownik/Pictures/image/1001.jpg" "C:/Users/uzytkownik/Pictures/image/1002.jpg"
### How many?
length(myfiles_jpg)
[1] 2920


有什么建议吗?

作为示例,我们将使用列表中的文件名:

library(stringr)

myfiles <- list("C:/Users/uzytkownik/Pictures/image/1.jpg","C:/Users/uzytkownik/Pictures/image/100.jpg","C:/Users/uzytkownik/Pictures/image/1001.jpg")

myfiles_new <- list()

for(i in 1:length(myfiles)){
  index <- regmatches(myfiles[[i]], gregexpr("(?<=image\\/)[0-9]+", myfiles[i], perl=TRUE))
  replacement <- str_pad(string = index, width = 4, side = "left", pad = 0)
  myfiles_new[[i]] <- sub('(?<=image\\/)[0-9]+', replacement, myfiles[i], perl = TRUE)
}

myfiles_new
[[1]]
[1] "C:/Users/uzytkownik/Pictures/image/0001.jpg"

[[2]]
[1] "C:/Users/uzytkownik/Pictures/image/0100.jpg"

[[3]]
[1] "C:/Users/uzytkownik/Pictures/image/1001.jpg"

最后:对于(i in 1:length(myfiles)){file.rename(myfiles[i],myfiles_new[[i]])}@Mikołaj,请随时将您的评论添加到现有答案中,这是一个社区答案。
"C:/Users/uzytkownik/Pictures/image/0001.jpg" 
library(stringr)

myfiles <- list("C:/Users/uzytkownik/Pictures/image/1.jpg","C:/Users/uzytkownik/Pictures/image/100.jpg","C:/Users/uzytkownik/Pictures/image/1001.jpg")

myfiles_new <- list()

for(i in 1:length(myfiles)){
  index <- regmatches(myfiles[[i]], gregexpr("(?<=image\\/)[0-9]+", myfiles[i], perl=TRUE))
  replacement <- str_pad(string = index, width = 4, side = "left", pad = 0)
  myfiles_new[[i]] <- sub('(?<=image\\/)[0-9]+', replacement, myfiles[i], perl = TRUE)
}

myfiles_new
[[1]]
[1] "C:/Users/uzytkownik/Pictures/image/0001.jpg"

[[2]]
[1] "C:/Users/uzytkownik/Pictures/image/0100.jpg"

[[3]]
[1] "C:/Users/uzytkownik/Pictures/image/1001.jpg"
sapply(myfiles_jpg,FUN=function(eachPath){ 
file.rename(from=eachPath,to=myfiles_new, eachPath))
})