Matlab:按创建日期对文件进行排序

3

我有一个目录里面有很多没有按任何顺序命名的文件。所以当我使用dir函数时,得到的文件是混乱无序的。但是我希望按照datenum的顺序读取这些文件。是否有dir或其他函数可以实现这个任务。

3个回答

5
你不需要通过datenumdate字段转换。假设你已经有了datenum,它是由dir返回的结构中的一个字段,即如果你使用files = dir(),那么files.datenum就是被转换为双精度格式的日期。所以要按日期使用它们,你只需要:
[~,idx] = sort([files.datenum]);

然后,idx 包含从最老的 files(idx(1)) 到最新的 files(idx(end)) 的值。如果你想先编辑最新的文件,请在 sort() 中使用 'descend' 选项。


你说得对。但那不是OP提供的问题。我的答案只解决了他直接提出的问题。 - voxeloctree
也许是真的,出于某种原因,我有一种感觉,OP查看了dir输出的所有files.name - bla

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         

现在它已经有了足够的不同,但我注意到你调整了你的帖子以包含我提供的信息。也许这是巧合。没关系。 - voxeloctree
有趣的是,当我开始回答时,只有我一个人,然后我添加了文件夹名称 case,然后才看到了额外的答案... - bla

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接