Sorting the name field in dir command
157 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi all,
I have a problem when I'm trying to get the content of a folder. It gets the name of the files but not in order. For example, the files starts with X- where the X is a number from 1 to 320. My code gets the name's file in the order 1, 10, 100, etc... and I need it in order 1,2,3,4...320
This is my code
myFolder = 'C:\Users\U95511\Dropbox\UPF\Roberto Verino\Advantrack\Test15-130313\P12\A3\Results';
if ~isdir(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder);
uiwait(warndlg(errorMessage));
return;
end
filePattern = fullfile(myFolder, '*.xls');
xlsFiles = dir(filePattern);
I need to order the struct xlsFiles.
I tried with W=sort(xlsFiles.name) but it creates an array instead of another struct ordered.
Thanks for the help.
BR,
Raúl.
0 comentarios
Respuestas (4)
Jonathan Sullivan
el 14 de Mzo. de 2013
Editada: Jonathan Sullivan
el 14 de Mzo. de 2013
[~,ind]=sort({xlsFiles.name});
W = xlsFiles(ind);
2 comentarios
Azzi Abdelmalek
el 14 de Mzo. de 2013
f= dir(filePattern);
xlsfiles={f.name}
xlsfiles=sort(xlsfiles)
2 comentarios
Azzi Abdelmalek
el 14 de Mzo. de 2013
Editada: Azzi Abdelmalek
el 14 de Mzo. de 2013
yourfolder= dir(filePattern);
xlsfiles={yourfolder.name}
[~,idx]=sort(xlsfiles)
new_folder=yourfolder(idx)
Dan
el 16 de Mzo. de 2021
Most of the time you don't need to actually sort the names. You can use the index to control the order in which a loop will access the names. This code works for me on version 2020b.
filePattern = '*.*';
files = dir(filePattern);
[~,idx] = sort(string({files.name}),2,'ascend');
for fileLoop=idx
% do something with files like print the names in order
fprintf('File: %d, %s', fileLoop, files(fileLoop).name)
end
0 comentarios
Ver también
Categorías
Más información sobre File Operations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!