使用 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)中使用的命名空间和元数据的含义是什么
AVAssetExportSession 在录制结束后添加元数据