The problem about dir function
Show older comments
hi every one:
when I use dir function to get the same type files of a file, (the file name is 10.png, 20.png, 50.png, 100.png, 200.png, 300.png, 1000.png), then I find the sequence is 10.png, 100.png, 1000.png, 20.png, 200.png.....
but what I want to get is the sequence like 10.png, 20.png, 50.png, 100.png, 200.png, 300.png, 1000.png
so please give me some suggestion or any help
thanks a lot
1 Comment
>> S = dir('*.txt');
>> S.name
ans =
'1.txt'
ans =
'10.txt'
ans =
'2.txt'
>> S = natsortfiles(S); % alphanumeric sort by filename
>> S.name
ans =
'1.txt'
ans =
'2.txt'
ans =
'10.txt'
Accepted Answer
More Answers (1)
David Young
on 28 Mar 2012
You could do something like this:
dstruct = dir('*.png');
names = {dstruct.name};
maxlen = max(cellfun(@length, names));
padname = @(s) sprintf(['%0' num2str(maxlen) 's'], s);
namesPadded = cellfun(padname, names, 'UniformOutput', false);
[~, sortOrder] = sort(namesPadded);
dstruct = dstruct(sortOrder);
The structure is now in the order you want. To see this, you can execute
disp({dstruct.name})
Categories
Find more on File Operations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!