annotate general/fileutils/listfiles.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents beb8a3f4a345
children
rev   line source
samer@4 1 function L=listfiles(dirname,varargin)
samer@4 2 % listfiles - list files in a directory
samer@4 3 %
samer@7 4 % listfiles ::
samer@7 5 % text ~'directory path',
samer@4 6 % options {
samer@4 7 % 'pattern':text ~'pattern to match files against',
samer@4 8 % 'regext':text ~'regular expression to match files against',
samer@4 9 % 'ext':text ~'file names must in end in this'
samer@4 10 % 'rec':bool/0 ~'recursive search?'
samer@4 11 % }
samer@4 12 % -> {[N]->text} ~'cell array of N paths'.
samer@4 13
samer@37 14 opts=options('rec',0,varargin{:});
samer@4 15
samer@4 16 if isfield(opts,'pattern'),
samer@4 17 dirpat = fullfile(dirname,opts.pattern);
samer@4 18 else
samer@4 19 dirpat = dirname;
samer@4 20 end
samer@4 21
samer@4 22 if isfield(opts,'regexp'),
samer@4 23 filter=@(f)(~isempty(regexp(f,opts.regexp)));
samer@4 24 elseif isfield(opts,'ext'),
samer@4 25 filter=@(f)endswith(f,opts.ext);
samer@4 26 else
samer@4 27 filter=@(f)true;
samer@4 28 end
samer@4 29
samer@4 30 D=dir(dirpat);
samer@4 31 L={};
samer@4 32
samer@4 33 for i=1:length(D)
samer@4 34 f=D(i);
samer@4 35 if ~f.isdir && feval(filter,f.name),
samer@4 36 L=[L {fullfile(dirname,f.name)}];
samer@4 37 end
samer@4 38 end
samer@4 39
samer@4 40 if opts.rec
samer@4 41 if strcmp(dirname,dirpat), DX=D; else DX=dir(dirname); end
samer@4 42 for i=1:length(DX)
samer@4 43 f=DX(i);
samer@4 44 if f.isdir && ~strcmp(f.name,'.') && ~strcmp(f.name,'..')
samer@4 45 L=[L,listfiles(fullfile(dirname,f.name),opts)];
samer@4 46 end
samer@4 47 end
samer@4 48 end