dir sorts filenames wrong

조회 수: 3 (최근 30일)
Christian Tieber
Christian Tieber 2020년 3월 2일
편집: Stephen23 2023년 3월 13일
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!

채택된 답변

Stephen23
Stephen23 2020년 3월 2일
편집: Stephen23 2023년 3월 13일
"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개)

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by