列出文件夹中的子文件夹 - Matlab(仅子文件夹,不是文件)

Mad*_*ddy 34 directory matlab list dir

我需要使用Matlab列出文件夹中的子文件夹.如果我使用

nameFolds = dir(pathFolder), 
Run Code Online (Sandbox Code Playgroud)

我得到...+的子文件夹名称.然后我必须跑nameFolds(1) = []两次.有没有更好的方法来使用Matlab获取subFolder名称?谢谢.

yuk*_*yuk 58

使用输出isdir字段dir分隔子目录和文件:

d = dir(pathFolder);
isub = [d(:).isdir]; %# returns logical vector
nameFolds = {d(isub).name}';
Run Code Online (Sandbox Code Playgroud)

然后你可以删除...

nameFolds(ismember(nameFolds,{'.','..'})) = [];
Run Code Online (Sandbox Code Playgroud)

你不应该这样做nameFolds(1:2) = [],因为dir根目录的输出不包含那些点文件夹.至少在Windows上.


小智 8

这是一个非常光滑和所有一行:

dirs = regexp(genpath(parentdir),['[^;]*'],'match');
Run Code Online (Sandbox Code Playgroud)

解释: genpath()是一个命令,它将parentdir一行文本中的所有子文件夹吐出,用分号分隔.正则表达式函数regexp()在该字符串中搜索模式并返回选项:'matches'到模式.在这种情况下,模式是任何不是分号="[^;]的字符,在一行中重复一次或多次=*.因此,这将搜索字符串并将所有不是分号的字符分组到单独的输出中 - 在本例中为所有子文件夹目录.

  • 此命令列出主文件夹以及子文件夹 - 这不是提问者想要的. (2认同)