2013-07-30 175 views
2

我有一堆文件在一個目錄中沒有以任何順序命名。所以當我使用dir函數時,我按照某種順序得到它們。但我想按照其datenum的順序閱讀這些文件。是否有可以實現此任務的dir或其他功能的選項。Matlab:根據創建日期排序文件

回答

2

這裏是梳理出來一個方法:

files=dir; 
valid_file_names= find(~[files.isdir]); 
file_date=[files.datenum]; 
[~, ix]=sort(file_date) 
ix=ix(ismember(ix,valid_file_names)); keep index of file names only 

    % load... 
    for n=1:numel(ix) 
     c{n}=your_loading_function(files(ix(n)).name); 
    end   
+0

請解釋一下嗎? – bla

+0

現在它已經完全不同了,但我確實注意到,您是否調整了您的帖子以包含我提供的信息。也許這是巧合。別擔心。 – voxeloctree

+0

有趣的是,當我開始回答它時,它只是我,然後我添加了文件夾名稱大小寫,然後我看到了額外的答案... – bla

3

你不需要通過datenumdate字段轉換。假設您已經有了datenum,這是已由dir返回的結構中的字段,即如果您使用files = dir(),那麼files.datenum是轉換爲雙格式的日期。因此,通過日期全部使用它們,你會需要的是:

[~,idx] = sort([files.datenum]); 

然後idx包含從最早的files(idx(1))值,以最新files(idx(end))。如果要編輯最新的第一個,請在sort()中使用'descend'作爲選項。

+0

這不會處理也可能發生在文件列表中的文件夾名稱... – bla

+0

你說得對。但這不是OP提供的問題。我的回答只能解決他直接解決的問題。 – voxeloctree

+0

也許是真的,由於某種原因,我有一種感覺,OP看着所有'files.name'的'dir'輸出... – bla

-1
list = dir('c:\*.*'); 
[r inx]=sort({list.date}); 
list = list(inx);