如何使用文件夹名称重命名文件列表

问题描述

我有一个文件夹,其中包含来自一本老式计算机杂志的5219个扫描的jpg文件。 (“ G:\ M&K”)这些文件按年份(1979、1980,...,1988)在文件夹中排序,然后按问题(1:6)排序。因此,第一个问题的路径如下:“ G:\ M&K \ 1979 \ 1”。

文件名的结构并不完美,因此我需要按页码,年份和问题来重命名它们。像这样:[页码] [问题] [年]。

我尝试过:

files <- data.frame(list.files("G:/M&K",full.names = T,include.dirs = T,recursive = T,pattern = ".jpg"))

但这只给了我一个文件路径列表,这将要求我每隔一年过滤一次并发布。

然后我尝试了:

ordner_liste <- list.dirs("G:/M&K") %>%
  str_subset("/..../.")
filesliste <- rbind.data.frame(
  lapply(
    ordner_liste,function(
      ordner_oeffnen){
  list.files(
    ordner_liste)
}),ordner_liste)

但这给了我一个奇怪的数据框,其中有57列包含第一个文件夹中的文件。

对我来说,最好的情况是一个数据框,其中包含用于年份,问题和文件名的单独列。然后,我的下一步就是尝试重命名所有文件。

解决方法

我认为这是很好的开始方式。只需在strsplit上使用files并在斜杠/rbind上分割,通过省略不需要的列即可将结果生成数据框。

files <- data.frame(V1=list.files("V:/M&K",full.names=T,include.dirs=T,recursive=T,pattern=".jpg"))


res <- setNames(do.call(rbind.data.frame,strsplit(files$V1,"/"))[-(1:2)],c("year","issue","file"))

结果

res
#    year issue   file
# 1  1979    01 01.jpg
# 2  1979    01 02.jpg
# 3  1979    01 03.jpg
# 4  1979    02 01.jpg
# 5  1979    02 02.jpg
# 6  1979    02 03.jpg
# 7  1979    03 01.jpg
# 8  1979    03 02.jpg
# 9  1979    03 03.jpg
# 10 1980    01 01.jpg
# 11 1980    01 02.jpg
# 12 1980    01 03.jpg
# 13 1980    02 01.jpg
# 14 1980    02 02.jpg
# 15 1980    02 03.jpg
# 16 1980    03 01.jpg
# 17 1980    03 02.jpg
# 18 1980    03 03.jpg
# 19 1981    01 01.jpg
# 20 1981    01 02.jpg
# 21 1981    01 03.jpg
# 22 1981    02 01.jpg
# 23 1981    02 02.jpg
# 24 1981    02 03.jpg
# 25 1981    03 01.jpg
# 26 1981    03 02.jpg
# 27 1981    03 03.jpg

通过根据您的描述创建文件夹结构进行了测试。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...