使用matlab中的`dir`命令在目录中列出特定文件

时间:2013-09-09 19:42:45

标签: matlab dir

这个问题与matlab中的dir命令有关。

PREAMBLE

我有一组文件:01.dat02.dat03.dat,...,20.dat。当我输入命令行:dir('*.dat')时,我会看到我的所有文件。如果我只想选择[01-09]范围内的特定文件,我会输入dir('0*.dat')

问题

假设,我只需要选择特定范围内的文件,即:03.dat04.dat05.dat06.dat。我怎样才能使用dir

我需要像dir('0[3:6].dat')这样的东西。由于与数据集相关的某些原因,我想避免使用a=dir('*.dat'); a(3:6).name;。所以,我想只在“dir”命令级别指定所需的范围。 有什么建议?非常感谢提前!!

2 个答案:

答案 0 :(得分:4)

您可以在MATLAB中使用正则表达式来过滤掉您想要的内容。它并不完美,但效果不错。

以下代码提取03.dat,04.dat,05.dat,06.dat文件:

listing = dir('*.dat');
pattern = '0[3-6].dat';

% this is kind of crude, but works: use regexp then pull out all the
% non-matching ones with a call to isempty(...)
notMatching = cellfun(@isempty, regexp({listing.name}, pattern))

% Pull out the the ones that match:
betterListing = listing(~notMatching)

答案 1 :(得分:2)

函数dir可以与arrayfun关联:它会将dir命令应用于向量的每个成员,例如3:6。在这里,文件名将引用从03.dat06.dat的四个文件。

伪代码dir('0[3:6].dat')可以通过以下方式翻译:

filenames = arrayfun(@(x) dir(['0' num2str(x) '.dat']), 3:6);