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?

回答(1 个)

Jan
Jan 2021-6-7
编辑:Jan 2021-6-7
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 个评论

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"
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.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 File Operations 的更多信息

产品

版本

R2020b

提问:

HPL
2021-6-7

评论:

2021-6-17

Community Treasure Hunt

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

Start Hunting!

Translated by