Mercurial > hg > ltpda
diff m-toolbox/classes/+utils/@prog/dirscan.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/+utils/@prog/dirscan.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,48 @@ +% DIRSCAN recursively scans the given directory for subdirectories that +% match the given pattern. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: DIRSCAN recursively scans the given directory for subdirectories that +% match the given pattern. +% +% CALL: files = dirscan(root_dir, pattern) +% +% INPUTS: root_dir - directory +% pattern - regexp pattern to match +% +% OUTPUTS: dirs - the found directory names +% +% VERSION: $Id: dirscan.m,v 1.2 2010/10/07 14:57:40 hewitson Exp $ +% +% HISTORY: 26-01-2007 M Hewitson +% Creation +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function dirs = dirscan(root_dir, pattern) + dirs = getdirs(root_dir, pattern, []); +end + +%-------------------------------------------------------------------------- +function odirs = getdirs(root_dir, pattern, odirs) + % Recursive function for getting file lists + % + + files = dir(root_dir); + + for j=1:length(files) + if files(j).isdir + + % add this dir if the pattern matches + if ~isempty(regexp(files(j).name, pattern, 'match')) + odirs = [odirs {fullfile(root_dir, files(j).name)}]; + end + % and look inside + if strcmp(files(j).name,'.')==0 && strcmp(files(j).name,'..')==0 + odirs = getdirs(fullfile(root_dir, files(j).name), pattern, odirs); + end + + end + end +end +% END \ No newline at end of file