MATLAB Answers

rename files from subfolders

3 views (last 30 days)
I have a folder that contain 10 subfolders each subfolder contains 4 images named 1.bmp,2.bmp,3.bmp,4.bmp, I want to rename those images to 9.bmp,10.bmp,11.bmp,12.bmp like that how i can?

  0 Comments

Sign in to comment.

Accepted Answer

Bhaskar R
Bhaskar R on 14 Feb 2020
Get all files structure to one variable
cd <your directory>
d = dir('**/*.bmp')
Apply loop to get every file to structure
filename_full = fullfile(d(loop variable).folder, d(loop variable).name);
[~, filename, ext] = fileparts(filename_full);
check file names use ifelse condition
if strcmp(filename, '1');
filename = '9' % so to all other 3 files
end
concatanate all string to form renamed path
filename_full_ren = fullfile(d(loop variable).folder,[filename, ext]);
then rename file by moving
movefile(filename_full, filename_full_ren);
You are done

  5 Comments

Show 2 older comments
Balaji M. Sontakke
Balaji M. Sontakke on 14 Feb 2020
it works but changes are in only first folder
cd testn;
d = dir('**/*.bmp');
for j=1:10
for ii = 1:4
filename_full = fullfile(d(ii).folder, d(ii).name);
[~, filename, ext] = fileparts(filename_full);
if strcmp(filename,'1')
filename = '9';
elseif strcmp(filename,'2')
filename = '10';
elseif strcmp(filename,'3')
filename = '11';
elseif strcmp(filename,'4')
filename = '12';
end
filename_full_ren = fullfile(d(ii).folder,[filename, ext]);
movefile(filename_full, filename_full_ren);
end
end
Bhaskar R
Bhaskar R on 14 Feb 2020
for ii = 1:4 % you have written for 4 files i think change for loop count as
end
for ii = 1:length(d) % change to this
Balaji M. Sontakke
Balaji M. Sontakke on 14 Feb 2020
yes it works, thanks
cd testn;
d = dir('**/*.bmp');
for ii = 1:length(d) % change to this
filename_full = fullfile(d(ii).folder, d(ii).name);
[~, filename, ext] = fileparts(filename_full);
if strcmp(filename,'1')
filename = '9';
elseif strcmp(filename,'2')
filename = '10';
elseif strcmp(filename,'3')
filename = '11';
elseif strcmp(filename,'4')
filename = '12';
end
filename_full_ren = fullfile(d(ii).folder,[filename, ext]);
movefile(filename_full, filename_full_ren);
end

Sign in to comment.

More Answers (0)

Sign in to answer this question.