from
Recursive Directory Function Execution
by Rodney Thomson
Recurse through all directories executing the supplied function
|
| directoryRecurse(directory, function_pointer, varargin) |
% directoryRecurse - Recurse through sub directories executing function pointer
%===============================================================================
% Description : Recurses through each directory, passing the full directory
% path and any extraneous arguments (varargin) to the specified
% function pointer
%
% Parameters : directory - Top level directory begin recursion from
% function_pointer - function to execute with each directory as
% its first argument
% varargin - Any extra arguments that should be passed
% to the function pointer.
%
% Call Sequence : directoryRecurse(directory, function_pointer, varargin)
%
% IE: To execute the 'rmdir' command with the 's' parameter over
% 'c:\tmp' and all subdirectories
%
% directoryRecurse('c:\tmp', @rmdir, 's')
%
% Author : Rodney Thomson
% http://iheartmatlab.blogspot.com
%===============================================================================
function directoryRecurse(directory, function_pointer, varargin)
contents = dir(directory);
directories = find([contents.isdir]);
% For loop will be skipped when directory contains no sub-directories
for i_dir = directories
sub_directory = contents(i_dir).name;
full_directory = fullfile(directory, sub_directory);
% ignore '.' and '..'
if (strcmp(sub_directory, '.') || strcmp(sub_directory, '..'))
continue;
end
% Recurse down
directoryRecurse(full_directory, function_pointer, varargin{:});
end
% execute the callback with any supplied parameters.
% Due to recursion will execute in a bottom up manner
function_pointer(directory, varargin{:});
end
|
|
Contact us at files@mathworks.com