如何在MATLAB中获取特定目录中所有目录名称和/或所有文件的列表?

cst*_*ack 3 filesystems matlab dir

我想做两件事:

  1. 获取目录中所有目录名称的列表,以及
  2. 获取目录中所有文件名的列表

我怎样才能在MATLAB中做到这一点?

现在,我正在努力:

dirnames = dir(image_dir);
Run Code Online (Sandbox Code Playgroud)

但我认为这会返回一个对象列表.size(dirnames)返回属性数,dirnames.name仅返回第一个目录的名称.

gno*_*ice 5

函数DIR实际上返回一个结构数组,每个文件或给定目录中的子目录有一个结构元素.当从一个结构阵列获取数据,访问场与点表示法将返回一个逗号分隔的列表的字段值的每个结构元件的一个值.这个以逗号分隔的列表可以通过将其放在方括号或单元格数组中,通过将其放在花括号中来收集到矢量中.[]{}

我通常希望通过使用逻辑索引来获取目录中的文件或子目录名称列表,如下所示:

dirInfo = dir(image_dir);            %# Get structure of directory information
isDir = [dirInfo.isdir];             %# A logical index the length of the 
                                     %#   structure array that is true for
                                     %#   structure elements that are
                                     %#   directories and false otherwise
dirNames = {dirInfo(isDir).name};    %# A cell array of directory names
fileNames = {dirInfo(~isDir).name};  %# A cell array of file names
Run Code Online (Sandbox Code Playgroud)