Group files with same names

I have a folder with images of different models of cars(20 to be specific). For each car model I have 100 sample images. They are all in a single folder and named:
Audi_01, Audi_02, ...... , Audi_100
Lexus_01, Lexus_02 ...., Lexus_100
...
How can I group same model cars and put them in a new folder.
I tried : copyfile Audi*.jpg Audi
But, for that I have to type and run the command for 20times.
Is there any alternative way or command in matlab?

Answers (1)

Jan
Jan on 7 Jun 2021
Edited: Jan on 7 Jun 2021
Folder = 'D:\Your\Data\Folder';
FileList = dir(fullfile(Folder, '*.jpg'));
FileName = {FileList.name};
Name = unqiue(strtok(FileName, '_'));
for iName = 1:numel(Name)
mkdir(fullfile(Folder, Name{iName}));
match = startsWith(FileName, [Name{iName}, '_']);
Group = FileName(match);
for iGroup = 1:numel(Group)
copyfile(fullfile(Folder, Gorup{iGroup}), fullfile(Folder, Name{iName}));
end
end

4 Comments

This code almost worked.
I have a several groups named in a different way, like
Chevrolet_camaro_01, 02,03....
and
Chevrolet_Colorado_01,02,03
But, according to the code, "FileName" variable takes both of them in a single variable "Chevrolet"
Stephen23
Stephen23 on 8 Jun 2021
Edited: Jan on 9 Jun 2021
Try:
Name = unique(regexprep(FileName,'_*\d+$',''));
This code isn't working.
"Name" is storing all the file names rather than storing unique filenames
The error I am getting is:
Unable to create directory.
  • " *.jpg " already exists as a file.
@HPL: please save the cell array FileName in a .mat file and upload it by clicking the paperclip button.

Sign in to comment.

Categories

Products

Release

R2020b

Asked:

HPL
on 7 Jun 2021

Commented:

on 17 Jun 2021

Community Treasure Hunt

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

Start Hunting!