Список файлов MatLab (исключая каталоги) в папке
Таким образом, я знаю, что могу перечислить все файлы и каталоги в моей текущей папке, используя такие функции, как dir()
или ls()
, и я знаю, что после перечисления я могу отличить их друг от друга с помощью поля isdir
.
Еще лучше, есть ли способ исключить текущий .
и родительский ..
каталоги-которые будут (конечно) отображаться каждый раз - и перечислить все остальные файлы и каталоги? Серьезно, кто использует ls()
интересно, есть ли .
?
2 ответа:
Выводом
dir
является то, что операционная система подает ему. Так что это может быть по-разному в зависимости от того, какую систему вы используете. Вот мой подход к этому:list=dir(); CleanList=setdiff({list.name},{'.','..'})';
Я не уверен, есть ли встроенный метод для этого, но почему бы не написать пользовательскую функцию, чтобы сделать то, что вы хотите?
Например:
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) = [];
Если вы разместите такие функции в определенном месте на вашем компьютере, вы можете гарантировать, что они всегда доступны для использования, добавив их в MATLAB путь в вашем файле
startup.m
.