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'到模式.在这种情况下,模式是任何不是分号="[^;]的字符,在一行中重复一次或多次=*.因此,这将搜索字符串并将所有不是分号的字符分组到单独的输出中 - 在本例中为所有子文件夹目录.