【问题标题】:How can I rename a list of files with its folder names如何使用文件夹名称重命名文件列表
【发布时间】:2020-12-03 08:41:51
【问题描述】:

我有一个文件夹,其中包含来自老式计算机杂志的 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 列包含第一个文件夹中的文件。

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

【问题讨论】:

    标签: r dataframe rename tidyverse lapply


    【解决方案1】:

    我认为你开始的方式很好。只需在files 上使用strsplit 将斜线/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
    

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

    【讨论】:

    • 我不得不在 files$V1 上使用 as.character() 但它有效。谢谢!
    • @NicoSaameli 酷!是的,这可能是因为您安装了旧的 R 版本 stringsAsFactors=TRUE 是标准配置。你应该更新。
    • 真丢脸。我以为没有人会看到我在加载我的包时收到的警告 =)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2015-04-17
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多