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

Matlab - Renaming files sequentially (Opposite direction)

我有顺序文件,例如:

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"

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

您可以 flip file_ID_doublearr 变量,您将拥有它。

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

现在您可以完成脚本的其余部分,文件名应按 4 到 1 的顺序排列。

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

file_ID_doublearr = max(file_ID_doublearr) - file_ID_doublearr + 1;

如果您执行以下操作之一,它就会奏效:

file_ID_doublearr = file_ID_doublearr - min(file_ID_doublearr)+1;

file_ID_doublearr = flipud(file_ID_doublearr); 

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