dir sorts filenames wrong
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Christian Tieber
le 2 Mar 2020
Modifié(e) : Stephen23
le 13 Mar 2023
This is how the files are sorted in the (windows)folder (by name):
Thats also how i want them to to be sorted.
This is how matlab sorts them if i use 'dir':
what can i do?
thanks!
0 commentaires
Réponse acceptée
Stephen23
le 2 Mar 2020
Modifié(e) : Stephen23
le 13 Mar 2023
"what can i do?"
If the filenames contain sufficient leading zeros, then split the names using fileparts, then sort the names, e.g.:
S = dir(....);
C = {S.name};
[~,F] = cellfun(@fileparts,C,'uni',0);
[~,X] = sort(F);
C = C(X);
Tested on some sample filenames:
>> C = {'Data2F.Part010.mdf','Data2F.Part003.mdf','Data2F.Part009.mdf','Data2F.mdf'};
>> [~,F] = cellfun(@fileparts,C,'uni',0);
>> [~,X] = sort(F);
>> C = C(X);
>> C{:}
ans = Data2F.mdf
ans = Data2F.Part003.mdf
ans = Data2F.Part009.mdf
ans = Data2F.Part010.mdf
Otherwise you can download my FEX submission natsortfiles and use it to sort the filenames (it splits the file extension for you, and also takes into account any number values in the names):
The submission includes help and HTML documentation with plenty of examples, you would probably need something a bit like this:
S = dir(..);
S = natsortfiles(S);
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur File Operations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!