Here's a function that searches recursively through all subdirectories of a given directory, collecting a list of all file names it finds:
function fileList = getAllFiles(dirName)
dirData = dir(dirName);%#Get the data for the current directory
dirIndex =[dirData.isdir];%#Find the index for directories
fileList ={dirData(~dirIndex).name}'; %'# Get a list of the filesif~isempty(fileList)
fileList = cellfun(@(x) fullfile(dirName,x),...%#Prepend path to files
fileList,'UniformOutput',false);end
subDirs ={dirData(dirIndex).name};%#Get a list of the subdirectories
validIndex =~ismember(subDirs,{'.','..'});%#Find index of subdirectories
%# that are not'.'or'..'for iDir = find(validIndex)%#Loop over valid subdirectories
nextDir = fullfile(dirName,subDirs{iDir});%#Get the subdirectory path
fileList =[fileList; getAllFiles(nextDir)];%#Recursively call getAllFiles
endend
After saving the above function somewhere on your MATLAB path, you can call it in the following way:
fileList = getAllFiles('D:\dic');