2014-02-14 147 views
3

因此,我知道我可以使用像dir()ls()這樣的函數列出當前文件夾中的所有文件和目錄,並且我知道一旦列出,我可以通過字段isdirMatLab文件夾中的列表文件(不包括目錄)

但是有沒有一種方法可以從非常先進的目錄中排除目錄並單獨列出這些文件?

更好的是,有沒有辦法排除當前.和父..目錄 - 這將(當然)顯示每一個 - 並列出每個其他文件和目錄?嚴重的是,誰使用ls()想知道.是否存在?

回答

2

dir的輸出是操作系統提供的輸出。所以它可能會有所不同,具體取決於您正在運行的系統。這是我的做法:

list=dir(); 
CleanList=setdiff({list.name},{'.','..'})'; 
1

我不確定是否有內置的方法,但爲什麼不寫一個自定義函數來做你想要的?

如:

function list = files_dir(varargin) 
% Similar functionality to 'dir', but only returns files (no folders) 

list = dir(varargin{:}); 

list([list.isdir]) = []; 

然後,您可以自定義此執行其他功能,如不包括隱藏文件。

而對於你的第二個要求,其中目錄'.''..'被排除:

function list = dir_exclude_self(varargin) 
% same as 'dir', but doesn't return '.' or '..' 

list = dir(varargin{:}); 

self_indices = ismember({list.name}, {'.', '..'}); 
list(self_indices) = []; 

如果你把函數像這樣在你的計算機上的一個特定的地方,你可以確保它們總是可用通過增加他們使用到您的startup.m文件中的MATLAB路徑。

+0

好主意,我會的。我發現奇怪的是,沒有內置於我認爲是常見問題的內置插件...... – McMa

+0

是的,我通常會發現它是另一種方式 - 我花了很多時間編寫已經內置的代碼! –

+0

然後自豪地稱自己爲「麥克馬,車輪的發明者」:D – McMa

相關問題