2013-07-04 118 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