的文件列表排序

201(30天)
琼
2011年8月18日
评论道: Jan Falta2022年5月23日
你好,
我有一些垫子文件到一个文件夹中。文件命名r_000形式。r_1200.mat垫。我使用命令列表= dir (fullfile (cd, * .mat))来检索文件的名称。问题是,Matlab返回一个列表的文件不是以正确的顺序,尽管事实Windows安排正确的文件:例如107号元素r_107。垫,但实际上是r_1005.mat。
有一个命令读取文件的名称以正确的顺序?
最好的问候,让
2的评论
1月
1月 2011年8月18日
订单DIR回复文件名称不明确。尽管它是按照字母顺序排列的所有测试我已经完成,这不是影响记录。这个担忧的DIR命令的操作系统。因此我不认为有一个“正确”的顺序,但只有一个“预期”顺序根据实际的味道。

登录置评。

接受的答案

Stephen23
Stephen23 2015年11月20日
编辑:Stephen23 2021年4月18日
你可以 下载 我FEX提交 natsortfiles ,这是解决这个问题:
S = dir (‘* . txt”);
S.name
ans =“1. txt”
ans =“10. txt”
ans =“2. txt”
S = natsortfiles(年代);%由文件名字母数字排序
S.name
ans =“1. txt”
ans =“2. txt”
ans =“10. txt”
2的评论
Jan Falta
Jan Falta 2022年5月23日
谢谢你,帮了很大的忙。:)

登录置评。

更多的答案(4)

1月
1月 2011年8月18日
对文件名进行排序根据数值顺序:
= dir (fullfile列表(cd,‘* .mat‘));
name = {list.name};
str = sprintf (“% s #”,{:})名称;
num = sscanf (str,“r_ % d.mat #”);
(假、索引)= (num)进行排序;
name =(索引)名称;
参见:
标准问题一直是一个好主意搜索der FEX起初…
1评论
阿卜杜HAJE卡里姆ALNAJAR
这是我的情况的解决方案。

登录置评。


Fangjun江
Fangjun江 2011年8月18日
因为你的一些文件有3个数字字母(r_000.mat)文件名称但其他人有4个数字字母(r_1200.mat)。没有直接的方式使它以正确的顺序列出。你可能需要重命名的文件具有相同数量的数字字母。
按照这篇文章中的示例。
1评论
伯克Pettijohn
伯克Pettijohn 2015年11月20日
^是的^
在matlab r_107 > r_1005但r_107 < r_1005在windows。
将文件名改为r_0107将解决它

登录置评。


沃尔特·罗伯森
沃尔特·罗伯森 2011年8月19日
dir列出了MATLAB当前文件夹中的文件和文件夹。结果出现的顺序返回的操作系统。
所以,订单 明确记录:它是任何操作系统返回,这是任何字母数字顺序不确定。
订单取决于订单中返回的POSIX readdir () http://pubs.opengroup.org/onlinepubs/009695399/functions/readdir.html 礼物很多未知数:
如果文件被删除或添加到目录后,最近呼吁opendir()或rewinddir (),无论随后调用readdir()返回的条目,文件是未指定的。
目录条目的圆点,圆点是可选的。本卷-2001年IEEE Std 1003.1没有提供一种方式来测试一个先天存在因为可移植的应用程序必须写入寻找这些条目(通常忽略)。编写代码,假定他们是第一个两个条目并不总是工作,因为很多实现允许他们比前两个其他条目,前一个“正常”的条目。
基本上,订单可以任何顺序返回内部目录结构使用命令文件。Unix系统V文件系统通常做的 磁盘上的目录条目,而不是读尽可能多的目录文件需要找到他们之后,当编写一个新的目录条目将使用第一个可用的空槽。这反映了现实的时候写硬盘很贵,让磁盘上的条目排序需要重写的一半块代表的目录(假设统一的随机访问。)这些天与控制器磁盘写入队列优化套管头运动,它通常是发现更有效的排序中的所有条目每次任何目录是感动,否则使用有序树系统而不是一个线性搜索系统。但是命令树系统不保证字母顺序阅读条目:它会选择回到叶节点的顺序…
简而言之:如果您的代码假设”。’和‘. .”前两个目录中的条目,您的代码有错误(即使在MS Windows)。如果您的代码假定目录条目在任何顺序返回,代码有错误(在所有操作系统)。
1评论
1月
1月 2011年8月20日
@Walter:你是对的:它是“记录”,但“礼物很多未知数”。这比我的更准确的制定“没有明确记录”。

登录置评。


克里斯托弗弄得乱七八糟
这节省了我很多的时间处理我的数据!
谢谢你!

类别

找到更多的在文件操作帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!