r - 如何使用文件夹名称重命名文件列表
问题描述
我有一个文件夹,其中包含来自老式计算机杂志的 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
通过根据您的描述创建文件夹结构进行测试。
推荐阅读
- excel - 我在当前工作表中有 2 个命令按钮,两个都是编码的,我需要正确的编码
- r - Data.Table 有条件地操作许多列
- django - Django选择所有类型的最后一行
- machine-learning - 训练和验证精度高,测试精度差
- linux - 如何在 Linux 中解决 Elasticsearch 中的此错误
- java - java.io.IOException:文档没有页面。在本地工作正常,但在 aws 中部署后无法工作
- docker - 寻找官方深度学习Docker镜像
- postgresql - 邮递员。锁定监视所有在关系字段中具有名称的数据库
- c - snprintf 在被复制的字符串中使用格式说明符
- python - 不同大小的列表比较