Sorting the name field in dir command
조회 수: 192 (최근 30일)
이전 댓글 표시
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
답변 (4개)
Jonathan Sullivan
2013년 3월 14일
편집: Jonathan Sullivan
2013년 3월 14일
[~,ind]=sort({xlsFiles.name});
W = xlsFiles(ind);
댓글 수: 2
Azzi Abdelmalek
2013년 3월 14일
f= dir(filePattern);
xlsfiles={f.name}
xlsfiles=sort(xlsfiles)
댓글 수: 2
Azzi Abdelmalek
2013년 3월 14일
편집: Azzi Abdelmalek
2013년 3월 14일
yourfolder= dir(filePattern);
xlsfiles={yourfolder.name}
[~,idx]=sort(xlsfiles)
new_folder=yourfolder(idx)
Dan
2021년 3월 16일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Spreadsheets에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!