% filename : filehound.m
% filelist = filehound(filespec)
% or: filelist = filehound
% for default search for *.m files
% description : recursively examines directories for presence of files
% matching the filter defined by input parameter 'filespec'
% parameters in : filespec = (optional) filter for filenames default = '*.m'
% filespec can be of any kind: a wild card can be used both for filename
% and for extension.
% filelist = filehound('*')
% filelist = filehound('*.*')
% Search for all files in current directory and subdirectories
% filelist = filehound('myfile')
% filelist = filehound('myfile.*')
% Search for all files whose name is 'myfile' independently from extension
% filelist = filehound('*.ext')
% Search for files with specific extension 'ext'
% Search of file is powered also by wild-card handling (i.e.: '*'). The
% only assumption is that the current program assumes that '*' is at least
% a permitted char, i.e. '*' cannot be an empty string. In this way: 'ab*c'
% cannot be equivalent to 'abc' in the search. Moreover '*abc' refers to
% the last part of a string, 'ab*c' sets constraints on first two letters
% of the string and the last letter, 'abc*', requires that the first three
% letters of the string are 'abc'. The string here is meant both filename
% and extension. Hence possible calls of filehound can be:
% filelist = filehound('*x.m*t')
% filelist = filehound('a*x.mt*')
% filelist = filehound('ax*.*mt')
% and all the other possbile combinations. Only one wild-card for filename
% and extension is allowed.
% parameters out: filelist = cell array with paths for specified files
% NOTE: the code is not optimized - hence suggestions for further improvement are welcomed.