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,但我无法想象这不起作用。如果有错误请告诉我。
我有顺序文件,例如:
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,但我无法想象这不起作用。如果有错误请告诉我。