Matlabを使用してフォルダー内のサブフォルダーを一覧表示する必要があります。使用する場合
nameFolds = dir(pathFolder),
+サブフォルダー名を取得.
します。..
その後、nameFolds(1) = []
2回実行する必要があります。Matlabを使用してsubFolder名を取得するためのより良い方法はありますか?ありがとう。
isdir
出力フィールドを使用dir
して、サブディレクトリとファイルを分離します。
d = dir(pathFolder);
isub = [d(:).isdir]; %# returns logical vector
nameFolds = {d(isub).name}';
その後、削除.
して..
nameFolds(ismember(nameFolds,{'.','..'})) = [];
nameFolds(1:2) = []
ルートディレクトリからdir
の出力にはこれらのドットフォルダが含まれていないため、実行しないでください。少なくともWindowsでは。
これは非常に滑らかで、すべて1行です。
dirs = regexp(genpath(parentdir),['[^;]*'],'match');
説明:
セミコロンで区切られた1行のテキストでgenpath()
のすべてのサブフォルダーを吐き出すコマンドです。parentdir
正規表現関数regexp()
は、その文字列内のパターンを検索し、オプション「matches」をパターンに返します。この場合、パターンはセミコロン= `[^;]ではなく、1行に1回以上繰り返される任意の文字=*です。したがって、これは文字列を検索し、セミコロンではないすべての文字を個別の出力(この場合はすべてのサブフォルダーディレクトリ)にグループ化します。
次のコードスニペットは、サブフォルダーの名前を返すだけです。
% `rootDir` is given
dirs = dir(rootDir);
% remove `.` and `..`
dirs(1:2) = [];
% select just directories not files
dirs = dirs([obj.dirs.isdir]);
% select name of directories
dirs = {dirs.name};
そして、さまざまなシナリオで提供された最初のソリューションを効果的に再利用するために、私はそれから関数を作成しました。
function [ dirList ] = get_directory_names( dir_name )
%get_directory_names; this function outputs a cell with directory names (as
%strings), given a certain dir name (string)
%from: http://stackoverflow.com/questions/8748976/list-the-subfolders-
%in-a-folder-matlab-only-subfolders-not-files
dd = dir(dir_name);
isub = [dd(:).isdir]; %# returns logical vector
dirList = {dd(isub).name}';
dirList(ismember(dirList,{'.','..'})) = [];
end