在R中重命名和重新定位数百个图像文件

时间:2013-11-13 21:16:34

标签: r loops rename

我在目录中(在MAC上)有数百张图像,我想重命名和重新定位。

以下是我正在使用的文件命名模式

131110 His-RFP female soft wpp 488 sens 546 His-RFP_Mark_and_Find_001_Pos001_S001_z01.tif
131110 His-RFP female soft wpp 488 sens 546 His-RFP_Mark_and_Find_001_Pos001_S001_z02.tif
131110 His-RFP female soft wpp 488 sens 546 His-RFP_Mark_and_Find_001_Pos001_S001_z03.tif
...
131110 His-RFP female soft wpp 488 sens 546 His-RFP_Mark_and_Find_001_Pos002_S001_z01.tif
131110 His-RFP female soft wpp 488 sens 546 His-RFP_Mark_and_Find_001_Pos002_S001_z02.tif
131110 His-RFP female soft wpp 488 sens 546 His-RFP_Mark_and_Find_001_Pos002_S001_z03.tif
...

请注意,PosXXX和zXX正在更改文件名。

我希望这些文件没有特别的顺序:

1)将所有文件重命名为以下格式 -

    BF_Position001_time101.tif
    BF_Position001_time102.tif
    BF_Position001_time103.tif
...
    BF_Position002_time101.tif
    BF_Position002_time102.tif
    BF_Position002_time103.tif
...

PosXXX - > PositionXXX和zXX - > time1XX

2)为原始目录中的每个位置创建一个目录

3)将相应的重命名文件放入正确的新创建的目录中。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

f <- list.files(pattern="His-RFP_Mark_and_Find_001_Pos..._S001_z..\\.tif")
pos <- substring(f, 75, 76)
zzz <- substring(f, 84, 85)
f2 <- file.path(paste0("Position", pos), paste0("BF_Position", pos, "_time1", zzz, ".tif"))

lapply(paste0("Position", unique(pos)), dir.create)
file.rename(f, f2)

答案 1 :(得分:1)

嗯,值得一提的是,我将如何在python中做到这一点......

要使用此功能,请将文件另存为renamer.py(或其他内容)。为简单起见,我猜它只是把它放在你的图像文件夹中。然后在终端窗口cd到该目录,键入chmod +x renamer.py。然后输入./renamer.py

#!/usr/bin/env python
import re
import os
import glob

pattern = r'.*_Pos(\d+)_S\d+_z(\d+)\.tif'

Flist = glob.glob('*.tif')
for f in Flist:
    search=re.search(pattern,f)
    if search:
        P,T = search.groups()
        FolderName = "Position"+P
        FileName = "BF_Position{}_time1{}.tif".format(P,T)

        try:
            os.renames(f,os.path.join(FolderName,FileName))
        except OSError:
            print f
            print os.path.join(FolderName,FileName)