Matlab - 按顺序重命名文件(相反方向)

时间:2015-08-30 07:17:04

标签: matlab file rename

我有顺序文件,例如:

hi_0001.edf

hi_0002.edf

hi_0003.edf

hi_0004.edf

我想重命名它们加上相反的方向(从头到尾开始),以便:

“hi_ 0001 .edf”变为“hello_ 0004 .edf”

“hi_ 0002 .edf”变为“hello_ 0003 .edf”

“hi_ 0003 .edf”变为“hello_ 0002 .edf”

“hi_ 0004 .edf”变为“hello_ 0001 .edf”

我有以下程序可以重命名文件但给它们相同的数字(从头到尾):

%//' Directory where TIFF images are present
directory  = 'C:\Users\opd28\Desktop\folder\'; 

%//' files pattern with absolute paths
filePattern = fullfile(directory, 'hi_*.edf'); 

%// Get the filenames
old_filename = cellstr(ls(filePattern)) ;

%// Get numbers associated with each file
file_ID = strrep(strrep(old_filename,'hi_',''),'.edf','');

file_ID_doublearr = str2double(file_ID);
file_ID_doublearr = file_ID_doublearr - min(file_ID_doublearr)+1;

file_ID = strtrim(cellstr(num2str(file_ID_doublearr)));

%// Get zeros string to be pre-appended to each filename
str_zeros = arrayfun(@(t) repmat('0',1,t),4-cellfun(@numel,file_ID),'uni',0) ;

%// Generate new filenames
new_filename = strcat('hello_',str_zeros,file_ID,'.edf') ;

%// Finally rename files with the absolute paths
cellfun(@(m1,m2)movefile(m1,m2),fullfile(directory,old_filename),fullfile(directory,new_filename)) ;

上面的代码生成以下内容:

“hi_ 0001 .edf”变为“hello_ 0001 .edf”

“hi_ 0002 .edf”变为“hello_ 0002 .edf”

“hi_ 0003 .edf”变为“hello_ 0003 .edf”

“hi_ 0004 .edf”变为“hello_ 0004 .edf”

我需要添加什么才能使新文件名从头到尾开始。

1 个答案:

答案 0 :(得分:0)

您可以flip Predicates变量,并且您已拥有它。

file_ID_doublearr

现在您可以完成脚本的其余部分,文件名应该从4到1进行排序。

我想这是您尝试更改数字的行:

file_ID_doublearr = str2double(file_ID);
file_ID = file_ID_doublearr(end:-1:1);   % or 'flipud' / 'fliplr'

如果您执行了以下操作之一,那就可以了:

file_ID_doublearr = max(file_ID_doublearr) - file_ID_doublearr + 1;

file_ID_doublearr = file_ID_doublearr - min(file_ID_doublearr)+1;

注意,我这里没有MATLAB,但我无法想象这不起作用。如果出现错误,请告诉我。