Я не знаю однофункционального метода для этого, но вы можете использовать genpath
для получения списка только подкаталогов . Этот список возвращается в виде строки каталогов, разделенных точкой с запятой, поэтому вам придется разделить его с помощью strread, т.е.
dirlist = strread(genpath('/path/of/directory'),'%s','delimiter',';')
Если вы не хотите включать данный каталог, удалите первую запись из dirlist
, т.е. dirlist(1)=[];
, поскольку она всегда является первой записью.
Затем получите список файлов в каждом каталоге с зацикленным dir
.
filenamelist=[];
for d=1:length(dirlist)
% keep only filenames
filelist=dir(dirlist{d});
filelist={filelist.name};
% remove '.' and '..' entries
filelist([strmatch('.',filelist,'exact');strmatch('..',filelist,'exact'))=[];
% or to ignore all hidden files, use filelist(strmatch('.',filelist))=[];
% prepend directory name to each filename entry, separated by filesep*
for f=1:length(filelist)
filelist{f}=[dirlist{d} filesep filelist{f}];
end
filenamelist=[filenamelist filelist];
end
filesep
возвращает разделитель каталогов для платформы, на которой работает MATLAB.
Это дает вам список имен файлов с полными путями в массиве ячеек filenamelist . Не самое лучшее решение, я знаю.