对dir命令中的名称字段进行排序

307次(过去30天)
劳尔
劳尔 2013年3月14日
编辑: 斯蒂芬。 2021年4月18日
你好,
我有一个问题,当我试图得到一个文件夹的内容。它获取文件的名称,但不是按顺序。例如,文件以X开头,其中X是1到320之间的数字。我的代码以1、10、100等顺序获取名称文件。我需要的顺序是1 2 3 4…320
这是我的代码
myFolder =用户“C: \ \ U95511 \ Dropbox \ UPF值\罗伯托·Verino \ Advantrack \ \ P12 \ A3 \ test15 - 130313结果”
如果~ isdir (myFolder)
errorMessage = sprintf ('错误:以下文件夹不存在:\n%s', myFolder);
uiwait (warndlg (errorMessage));
返回
结束
filePattern = fullfile (myFolder,‘* . xls”);
xlsFiles = dir (filePattern);
我需要订购结构xlsFiles。
我尝试使用W=sort(xlsFiles.name),但它创建了一个数组,而不是另一个有序的结构。
谢谢你的帮助。
BR,
劳尔。

接受的答案

Azzi Abdelmalek
Azzi Abdelmalek 2013年3月14日
f = dir (filePattern);
xlsfiles = {f.name}
xlsfiles =排序(xlsfiles)
2的评论
Azzi Abdelmalek
Azzi Abdelmalek 2013年3月14日
yourfolder = dir (filePattern);
xlsfiles = {yourfolder.name}
[~, idx] = (xlsfiles)排序
new_folder = yourfolder (idx)

登录评论。

更多的答案(3)

乔纳森•沙利文
乔纳森•沙利文 2013年3月14日
编辑:乔纳森•沙利文 2013年3月14日
[~,印第安纳州]=排序({xlsFiles.name});
W = xlsFiles(印第安纳州);
2的评论
安德烈Guerra
安德烈Guerra 2016年11月16日
这招对我起作用了!多谢!

登录评论。


丹
2021年3月16日
大多数时候你不需要对名字进行排序。您可以使用索引来控制循环访问名称的顺序。这段代码适用于我的版本2020b。
filePattern =“* *”。
文件= dir (filePattern);
[~, idx] =类型(字符串({files.name}), 2,“提升”);
fileLoop = idx
%对文件做一些事情,如按顺序打印文件名
流(文件:% d %年代”、fileLoop文件(fileLoop) . name)
结束

斯蒂芬。
斯蒂芬。 2021年4月18日
编辑:斯蒂芬。 2021年4月18日
你可以 下载 我FEX提交 natsortfiles
>> S = dir(‘* . txt”);
> > S.name
ans =
“1. txt”
ans =
“10. txt”
ans =
“2. txt”
>> S = natsortfiles(S);%按文件名字母数字排序
> > S.name
ans =
“1. txt”
ans =
“2. txt”
ans =
“10. txt”

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!