Sorting the name field in dir command
205 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (4)
Jonathan Sullivan
am 14 Mär. 2013
Bearbeitet: Jonathan Sullivan
am 14 Mär. 2013
[~,ind]=sort({xlsFiles.name});
W = xlsFiles(ind);
2 Kommentare
Azzi Abdelmalek
am 14 Mär. 2013
f= dir(filePattern);
xlsfiles={f.name}
xlsfiles=sort(xlsfiles)
2 Kommentare
Azzi Abdelmalek
am 14 Mär. 2013
Bearbeitet: Azzi Abdelmalek
am 14 Mär. 2013
yourfolder= dir(filePattern);
xlsfiles={yourfolder.name}
[~,idx]=sort(xlsfiles)
new_folder=yourfolder(idx)
Dan
am 16 Mär. 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 Kommentare
Siehe auch
Kategorien
Mehr zu File Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!