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



>我有一个关于根据元数据帧中的信息重命名文件夹的问题。在下面,您将找到我的目录结构和元数据的.information示例。

元数据帧:

date>S_number>S2>S3
<>Sample_name th style="text-align: right;">
2021_05_20<</td>td style="文本对齐:居中;">V_3_4 S1
2021_05_20<</td>td style="文本对齐:居中;">V_9_4
2021_05_20<</td>td style="文本对齐:居中;">H_13_5

您可以使用list.dirs('/path', recursive = F, full.names = F)查找当前目录名称(例如 S1、S2 等)。然后,您可以使用system(paste('mv', old_dir, new_dir))更改名称

例:

main_dir
└── experiment
└── D0
├── temperature
│   ├── S1
│   └── S2
└── weather
├── S1
└── S2
Metadataframe <- data.frame(Sample_name = c("V_3_4", "V_9_4", "H_13_5"), S_number = c("S1", "S2", "S3"))
setwd("~/main_dir/experiment/D0/temperature/")
dirs <- list.dirs('./', recursive = F, full.names = F)
if(any(dirs %in% Metadataframe$S_number)){
for(dir in dirs[which(dirs %in% Metadataframe$S_number)]){
system(paste("mv", dir, Metadataframe$Sample_name[which(Metadataframe$S_number == dir)]))
}
}
main_dir
└── experiment
└── D0
├── temperature
│   ├── V_3_4
│   └── V_9_4
└── weather
├── S1
└── S2

您可以将所有这些放入一个 for 循环中以执行所有文件夹。

编辑:要更改所有目录:

main_dir
└── experiment
├── D0
│   ├── temperature
│   │   ├── S1
│   │   └── S2
│   └── weather
│       ├── S1
│       └── S2
└── D1
├── temperature
│   ├── S1
│   ├── S2
│   └── S3
└── weather
├── S1
├── S2
└── S3
Metadataframe <- data.frame(Sample_name = c("V_3_4", "V_9_4", "H_13_5"), S_number = c("S1", "S2", "S3"))
dirs <- list.dirs('~/main_dir', recursive = TRUE, full.names = TRUE)
if(any(grepl(paste(Metadataframe$S_number, collapse = "|"), dirs))){
for(dir in dirs[grep(paste(Metadataframe$S_number, collapse = "|"), dirs)]){
dir_path <- sub("S[0-9]+", "", dir)
sample <- sub(dir_path, "", dir)
new_path <- paste0(dir_path, Metadataframe$Sample_name[which(Metadataframe$S_number == sample)])
system(paste("mv", dir, new_path))
}
}
main_dir
└── experiment
├── D0
│   ├── temperature
│   │   ├── V_3_4
│   │   └── V_9_4
│   └── weather
│       ├── V_3_4
│       └── V_9_4
└── D1
├── temperature
│   ├── H_13_5
│   ├── V_3_4
│   └── V_9_4
└── weather
├── H_13_5
├── V_3_4
└── V_9_4

最新更新