使用R根据文件名重命名目录中的文件

乱砍

我有一个数据框 (FilesDf),其中包含每个文件名和我需要对其进行的替换 (FilesDf$FileTags)。

FileName                  Filename          FileTags
H:/name/+Sm,Jon.docx      +Sm,Jon.docx      RR UB AF-
H:/name/+Suth,Jane.docx   +Suth,Jane.docx   AF-
H:/name/+Dunn,Robert.docx +Dunn,Robert.docx RR LL-

对于此文件夹中的每个文件名,我需要附加 FileTags 作为前缀。文件名需要如下所示:

RR UB AF-Sm,Jon.docx      
AF-Suth,Jane.docx   
RR LL-Dunn,Robert.docx 

我的尝试:

Filepath <- "H:/name/"
files <- list.files(Filepath,pattern = "*.doc",full.names = T) 

nrow<-nrow(FilesDf)

for(i in nrow){
sapply(files,FUN=function(eachPath){ 
   file.rename(from=eachPath,to= sub(pattern="\\+", 
   FilesDf$FileTags[i],eachPath))
})
}

但这会导致所有文件都具有相同的前缀,而不是具有与文件名正确对应的前缀。

r2evans

我建议你分阶段做事,部分是为了确保它正常工作(测试),部分是因为它易于维护/扩展。

FilesDf$FileName2 <- file.path(dirname(FilesDf$FileName),
                               gsub("\\+", "", paste0(FilesDf$FileTags, FilesDf$Filename)))
FilesDf
#                    FileName          Filename  FileTags                      FileName2
# 1      H:/name/+Sm,Jon.docx      +Sm,Jon.docx RR UB AF-   H:/name/RR UB AF-Sm,Jon.docx
# 2   H:/name/+Suth,Jane.docx   +Suth,Jane.docx       AF-      H:/name/AF-Suth,Jane.docx
# 3 H:/name/+Dunn,Robert.docx +Dunn,Robert.docx    RR LL- H:/name/RR LL-Dunn,Robert.docx

如果新名称 ( $FileName2) 看起来不错,那么

ign <- mapply(file.rename, FilesDf$FileName, FilesDf$FileName2)

应该管用。

(我最初被$FileNamevs分心$Filename,错过了第二个......)


数据:

FilesDf <- structure(list(FileName = c("H:/name/+Sm,Jon.docx", "H:/name/+Suth,Jane.docx", 
"H:/name/+Dunn,Robert.docx"), Filename = c("+Sm,Jon.docx", "+Suth,Jane.docx", 
"+Dunn,Robert.docx"), FileTags = c("RR UB AF-", "AF-", "RR LL-"
)), row.names = c(NA, -3L), class = c("data.frame"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重命名目录中的文件名中使用Python

使用for循环python重命名目录中的文件名

使用datagridview列值重命名目录中的所有文件名

根据父目录使用R中的特定文件名重命名文件

使用python或R重命名目录中的文件

根据指令文件重命名目录中的文件

如何使用当前目录重命名目录中的文件

R-以正确的顺序重命名目录中的文件

批量重命名目录中的文件

Powershell 重命名目录中的文件

Python,重命名目录中的文件

重命名目录中的所有文件以添加前导零-用于具有不同“词根”的文件名

使用Python重命名目录中的多个文件

使用增量索引重命名目录中的文件

使用Python重命名目录中的所有文件

根据文件名在python中重命名文件

根据文本文件中包含的文本重命名目录中的文件

根据目录中包含的文本重命名目录中的所有文件

重命名目录中的所有文件,同时保留任何文件扩展名

重命名更改目录中的CSV文件名

重命名多个目录中的文件名

Powershell重命名目录中的所有文件,重命名值来自被重命名的文件

Bash - 如何根据 names.txt 重命名目录中的文件

如何在Mac上根据创建时间重命名目录中的文件列表

根据第一行重命名目录中的每个文件

使用文本文件中的列表重命名目录中的文件

使用python重命名目录中的所有文件以在每个文件中存在的行

重命名目录名称中包含扩展名的树中文件

重命名目录中的所有文件扩展名