Sorting the name field in dir command
    95 ビュー (過去 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 で Structures についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




