Rename files: keep only first 5 characters

6 views (last 30 days)
I have a folder with 250 pictures which I want to rename. The original names are "00XXX.[random numbers]" (with XXX from 001 to 250) and I would like them to simply be named "00XXX", deleting the remaining characters.
Is there an easy way of doing this in a for loop?
Thanks in advance!

Accepted Answer

Voss
Voss on 14 Mar 2022
Edited: Voss on 14 Mar 2022
You can use movefile() to rename files. Try something like this on a copy of your folder:
pn = 'path\to\your\directory\';
f = dir(fullfile(pn,'*.png')); % get info about all .png files in folder pn, for instance
for ii = 1:numel(f)
[~,name,ext] = fileparts(f(ii).name);
movefile(fullfile(pn,f(ii).name),fullfile(pn,[name(1:5) ext]));
end
  2 Comments
ABCDEFG HIJKLMN
ABCDEFG HIJKLMN on 14 Mar 2022
This worked perfectly, thank you for the help!
Voss
Voss on 14 Mar 2022
You're welcome! Glad it worked

Sign in to comment.

More Answers (1)

Jan
Jan on 14 Mar 2022
Edited: Jan on 14 Mar 2022
Folder = 'C:\Your\Folder';
List = dir(fullfile(Folder, '*.*'));
List([List.isdir]) = []; % [EDITED] remove folders
for k = 1:numel(List)
Name = List(k).name;
Source = fullfile(Folder, Name);
Dest = fullfile(Folder, strtok(Name, '.'));
[Succ, Msg] = movefile(Source, Dest, 'f');
if Succ == 0
error(Msg);
end
end
  2 Comments
ABCDEFG HIJKLMN
ABCDEFG HIJKLMN on 14 Mar 2022
Edited: ABCDEFG HIJKLMN on 14 Mar 2022
Thank you for your answer. Unfortunetely, it doesn't seem to work. I get the following error: Cannot copy or move a file or directory onto itself.
Jan
Jan on 14 Mar 2022
Then some of the files in this folder do not match the naming scheme "00XXX.[random numbers]". Maybe "." and ".." are the problem. I've updated the code, but if the other answer is working, stay at it.

Sign in to comment.

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!