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?

Réponses (1)

Jan
Jan le 7 Juin 2021
Modifié(e) : Jan le 7 Juin 2021

0 votes

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 commentaires

HPL
HPL le 8 Juin 2021
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 le 8 Juin 2021
Modifié(e) : Jan le 9 Juin 2021
Try:
Name = unique(regexprep(FileName,'_*\d+$',''));
HPL
HPL le 16 Juin 2021
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.
Stephen23
Stephen23 le 17 Juin 2021
@HPL: please save the cell array FileName in a .mat file and upload it by clicking the paperclip button.

Connectez-vous pour commenter.

Catégories

En savoir plus sur File Operations dans Centre d'aide et File Exchange

Produits

Version

R2020b

Question posée :

HPL
le 7 Juin 2021

Commenté :

le 17 Juin 2021

Community Treasure Hunt

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

Start Hunting!

Translated by