使用列表重命名文件名的特定组件

时间:2016-08-10 16:58:24

标签: matlab rename

我有很多看起来像这样的文件:

imgDATA_subj001_log000_sess001_at.img
imgDATA_subj001_log000_sess001_cn.img
imgDATA_subj001_log000_sess001_cx.img
imgDATA_subj001_log000_sess002_at.img
imgDATA_subj001_log000_sess002_cn.img
imgDATA_subj001_log000_sess002_cx.img
imgDATA_subj002_log000_sess001_at.img

...

我想在 subj 之后重命名文件名的特定数字部分。例如,subj001,subj002,subj003等将被重命名为subj014,subj027,subj65等,但保留文件名的其余部分。我有新名称列表,但不知道如何查找旧名称并与新名称匹配,然后重命名。我尝试使用循环和fileparts,但我不知道如何隔离subj ***组件。我可以做move但这样效率很低。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果您知道要特别替换的文件名部分,即您知道subj001 = subj014,那么您应该使用dir命令获取现有目录中的文件列表。 这将为您提供文件列表

f=dir(imgData*.img)
for somecounter=1:length(f)

    filename=f(somecounter).name

    newname=strrep(filename,'subj001','subj014')
    movefile(filename,newname)

end

显然,您希望设置每个单独名称的数组以匹配并迭代。

相关问题