所以我知道我可以使用dir()
或ls()
这样的函数列出当前文件夹中的所有文件和目录,我知道一旦列出,我可以用字段{告诉他们彼此{1}}。
但有没有办法从正在开始排除目录并单独列出文件?
更好的是,有没有办法排除当前isdir
和父.
目录 - 当然会(每次)显示 - 并列出其他所有文件和目录?说真的,谁使用..
想知道ls()
是否存在?
答案 0 :(得分:2)
dir
的输出是操作系统提供的输出。因此,根据您运行的系统,它可能会有所不同。以下是我的方法:
list=dir();
CleanList=setdiff({list.name},{'.','..'})';
答案 1 :(得分: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路径来确保它们始终可用。