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))
})