根据文件名创建文件夹
Create folder based on filename
我有一个问题,如何根据部分文件名创建一个新文件夹,并将相应的文件直接移动到新文件夹中。您将在下面找到我的目录结构和一些示例。在 D0 和 D1 文件夹中,您会发现包含 .TIF 文件的天气和日期文件夹。我想要的是在 brightfield 和 FITC 文件夹中创建部分基于文件名的文件夹。例如,如果文件包含 s2,则创建一个文件夹 S2,其中包含名称中包含 S2 的文件。
目前情况
main Directory
|
|___ Experiment
├── D0
├── Weather
|__ D0_PM_flow__Weather 100 - CAM_s3_t5.TIF
|__ D0_PM_flow__Weather 100 - CAM_s3_t5.TIF
│ └── Temperature
└── D1
├── Weather
└── Temperature
我想要什么:
main Directory
|
|___ Experiment
├── D0
├── Weather
|__ S1
| D0_PM_flow__Weather 100.txt
|__ S2
|D0_PM_flow__Weather 100.txt
│ └── Temperature
└── D1
├── Weather
└── Temperature
我可以使用下面的代码手动执行此操作,但这会花费很多时间。有没有更方便的方法来更自动地执行此操作?为方便起见,我只在 D0/Weather 文件夹中显示了 3 个文件,但在 D0/Temperature 文件夹中也有文件, D1/Weather 和 D1/Temperature 我也想在其中创建文件夹,例如S1,S2等。此外,有些文件夹只有三个组,所以S1-S3,而其他组有S1-S6。
预先感谢您的建议
回收:
library(stringr)
#Get all files
path <- 'C:/temp/test'
files <- list.files(path= path, recursive = TRUE)
move.file <- function(filename) {
(fromdir <- dirname(filename))
(filebase <- basename(filename))
dir.match <- toupper(str_extract(filename,'_[Ss][0-9]+_'))
if (isTRUE(nchar(dir.match)>0)) {
dir.match <- substr(dir.match,2,nchar(dir.match)-1)
# File not in right directory
if (basename(fromdir)!=dir.match) {
dir.create(file.path(path,fromdir,dir.match),showWarnings = F)
file.rename(from = file.path(path,filename),
to = file.path(path,fromdir,dir.match,filebase))
}
} else {F}
}
lapply(files, move.file)
我有一个问题,如何根据部分文件名创建一个新文件夹,并将相应的文件直接移动到新文件夹中。您将在下面找到我的目录结构和一些示例。在 D0 和 D1 文件夹中,您会发现包含 .TIF 文件的天气和日期文件夹。我想要的是在 brightfield 和 FITC 文件夹中创建部分基于文件名的文件夹。例如,如果文件包含 s2,则创建一个文件夹 S2,其中包含名称中包含 S2 的文件。
目前情况
main Directory
|
|___ Experiment
├── D0
├── Weather
|__ D0_PM_flow__Weather 100 - CAM_s3_t5.TIF
|__ D0_PM_flow__Weather 100 - CAM_s3_t5.TIF
│ └── Temperature
└── D1
├── Weather
└── Temperature
我想要什么:
main Directory
|
|___ Experiment
├── D0
├── Weather
|__ S1
| D0_PM_flow__Weather 100.txt
|__ S2
|D0_PM_flow__Weather 100.txt
│ └── Temperature
└── D1
├── Weather
└── Temperature
我可以使用下面的代码手动执行此操作,但这会花费很多时间。有没有更方便的方法来更自动地执行此操作?为方便起见,我只在 D0/Weather 文件夹中显示了 3 个文件,但在 D0/Temperature 文件夹中也有文件, D1/Weather 和 D1/Temperature 我也想在其中创建文件夹,例如S1,S2等。此外,有些文件夹只有三个组,所以S1-S3,而其他组有S1-S6。 预先感谢您的建议
回收
library(stringr)
#Get all files
path <- 'C:/temp/test'
files <- list.files(path= path, recursive = TRUE)
move.file <- function(filename) {
(fromdir <- dirname(filename))
(filebase <- basename(filename))
dir.match <- toupper(str_extract(filename,'_[Ss][0-9]+_'))
if (isTRUE(nchar(dir.match)>0)) {
dir.match <- substr(dir.match,2,nchar(dir.match)-1)
# File not in right directory
if (basename(fromdir)!=dir.match) {
dir.create(file.path(path,fromdir,dir.match),showWarnings = F)
file.rename(from = file.path(path,filename),
to = file.path(path,fromdir,dir.match,filebase))
}
} else {F}
}
lapply(files, move.file)