Matlabを使用して、フォルダー内のサブフォルダーをリストする必要があります。私が使用する場合
_nameFolds = dir(pathFolder),
_
_.
_および_..
_ +サブフォルダー名を取得します。その後、nameFolds(1) = []
を2回実行する必要があります。 Matlabを使用してサブフォルダ名を取得するより良い方法はありますか?ありがとう。
isdir
出力のdir
フィールドを使用して、サブディレクトリとファイルを分離します。
_d = dir(pathFolder);
isub = [d(:).isdir]; %# returns logical vector
nameFolds = {d(isub).name}';
_
その後、_.
_と_..
_を削除できます
_nameFolds(ismember(nameFolds,{'.','..'})) = [];
_
ルートディレクトリからのdir
出力にはドットフォルダーが含まれていないため、nameFolds(1:2) = []
を実行しないでください。少なくともWindowsでは。
次のコードスニペットは、サブフォルダーの名前を返すだけです。
% `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