2013-07-04 57 views
3

我在包含500,000个文件的目录上使用“dir”命令。现在已经运行了15分钟。Matlab dir()需要永久运行

有什么方法可以加快速度吗?也许另一种命令?

在此先感谢,

Gil。

+0

尝试使用'[〜,files] = system('ls')'或'[〜,files] = system('dir')',检查它们是否更快。 – Werner

+0

你在使用什么操作系统? – Pursuit

+0

我使用Windows 7 – GilLevi

回答

5

如果您只是想要文件名,请尝试files = ls;。根据帮助,我认为ls应该适用于任何操作系统。在你的情况下,dir需要这么长时间的原因是它计算每个文件的文件大小,修改日期等。

+0

感谢您的帮助! – GilLevi

3

我知道这是旧的文章,但...

我想指出的是,如果你决定使用“LS”功能(相对于“目录”),此行为略有不同在Unix和Windows操作系统中,请注意这一点。

例如,考虑以下几点:

a=ls 

在Unix中,上述将产生含有工作目录的内容的1xM阵列(char类型)。

在Windows中,它将生成一个NxM数组(char类型)和目录内容,其中N等于工作目录中文件和目录的数量,M是最长文件的字符长度或目录)名称。

“dir”是可移植的,在Unix和Windows FME中表现相同。

由于这个原因,我在过去的Windows和Unix之间移植我的MATLAB代码(特别是CentOS 6.2)时遇到了一些小问题。

+0

感谢您的帮助! – GilLevi

+0

@HeWhoLikesWaffles:好点。我的猜测是,这种差异可以追溯到Matlab的旧时代,几乎所有的字符串都被视为像有额外的填充空格的矩阵(而不是有趣的)。我认为将Windows上'ls'的输出转换成类似于UNIX系统的格式的简单方法是:'a = cellstr(ls);''sprintf('%s \ n',a { })'。这甚至可以在UNIX机器上使用'ls' - 至少它在OS X 10.9.4和最新的Matlab上都有。 – horchler