使用 R 根据元数据一次性重命名文件夹/目录

Posted

技术标签:

【中文标题】使用 R 根据元数据一次性重命名文件夹/目录【英文标题】:Rename folders/directories in one go based on metadata with R 【发布时间】:2021-07-22 02:25:24 【问题描述】:

我有一个关于根据元数据框架中的信息重命名文件夹的问题。在下面,您将找到我的目录结构和元数据的 .information 示例。这意味着名称为 S1 的文件夹将被命名为 V_3_4 等。文件夹 S1、S2、S3 等可以在 D0 和 D1 文件夹中找到。

元数据框:

date Sample_name S_number
2021_05_20 V_3_4 S1
2021_05_20 V_9_4 S2
2021_05_20 H_13_5 S3

目录结构:

main Directory
        |
        |___ 2021_metadata.txt
        |___ Experiment
                ├── D0
                   ├── Weather
                           |__ S1
                           |__ S2
                           
                │  └── Temperature
                           |__ S1
                           |__ S2
                └── D1
                   ├── Weather
                           |__ S1
                           |__ S2
                           |__ S3
                   └── Temperature

我试图用这段代码做到这一点:

name_file <- "./20210325_metadata_r_test_1.txt"

Metadataframe <- read.delim(name_file)


dirs <- list.dirs(path = path, recursive = TRUE, full.names = TRUE)

if(any(dirs %in% Metadataframe$S_number))
    for(dir in dirs[which(dirs %in% Metadataframe$S_number)])
        shell(paste("move", dir, Metadataframe$Sample_name[which(Metadataframe$S_number == dir)]))
    

当我想通过将特定文件夹的路径(例如 ~/main directory/experiment/D0/Weather)放入 list.dirs 来单独执行此代码时,此代码有效。但是,我想一次性重命名所有文件夹(在 D0/温度、D1/天气和 D1/温度中也是如此)。我尝试从主目录执行 list.dirs() 以获取所有目录,但是代码没有做任何事情。它不会重命名文件夹。我做错了什么,有没有办法解决这个问题?

提前感谢您的帮助

【问题讨论】:

【参考方案1】:

我猜你只需要另一个 for 循环。看看这是否有帮助

paths <- paste0("~/main directory/experiment/", c("D0/temperature", "D1/Weather", "D1/temperature"))

invisible(lapply(paths, function(path)
  dirs <- list.dirs(path = path, recursive = TRUE, full.names = TRUE)
  
  if(any(dirs %in% Metadataframe$S_number))
    for(dir in dirs[which(dirs %in% Metadataframe$S_number)])
      shell(paste("move", dir, Metadataframe$Sample_name[which(Metadataframe$S_number == dir)]))
    
  
  return(NULL)
))

【讨论】:

以上是关于使用 R 根据元数据一次性重命名文件夹/目录的主要内容,如果未能解决你的问题,请参考以下文章

在hdfs(namenode)中使用的命名空间和元数据的含义是什么

重命名基础表而不破坏元数据库中的仪表板

s3cmd 复制删除元数据,你如何维护?

AVAssetExportSession 在录制结束后添加元数据

Python测试框架pytest(19)插件 - 元数据可选择URL地址实时输出错误信息失败重试

将CSV文件数据读取为命名元组行的pythonic方法是啥?