>> pwd
ans =
D:\Ohjelmistot\MATLAB\R2008a\bin
>> s = rlsdir('.');
>> s.name
ans =
.\registry
ans =
.\util
ans =
.\win32
ans =
.\util\mex
ans =
.\win32\accessible
ans =
.\win32\codecs
ans =
.\win32\imageformats
ans =
.\win32\ipp20
ans =
.\win32\mbuildopts
ans =
.\win32\mexopts
>> s = rlsdir('registry');
>> s.name
>> s = rlsdir('util');
>> s.name
ans =
util\mex
>>
Toiminta perustuu oletukseen, että hakemistot . ja .. ovat ensimmäisenä listassa. Tämä ei toteudu ainakaan silloin, jos hakemisto(i)ssa on tiedostoja, jotka alkavat #:lla. Esimerkiksi Emacs jättää jälkeensä tällaisia tiedostoja.
Koodi (jota saa käyttää vapaasti):
function dirs = rlsdir(root)
% DIRS = RLSDIR(ROOT)
% Returns a recursive listing of subdirectories of ROOT in structure DIRS
% similar to that returned by the built-in function DIR. The pathname of
% the NAME field of the structure DIRS is given relative to ROOT.
temp = dir(root); % List the root dir
temp(1:2)=[]; % Remove this directory (.) and upper level (..)
n = 1;
for n = 1:length(temp) % Loop through directories and files
if temp(n).isdir == 1 % If a directory is found ...
temp(n).name = [root '\' temp(n).name]; % concatenate the root level
temp = [temp; rlsdir(temp(n).name)]; % directory name and the newly
end % found directory to a
end % temporary variable and list
m = []; % the contents of the new dir.
for n = 1:length(temp) % Remove all non-directories from the temporary
if temp(n).isdir == 0 % variable.
m = [m ; n];
end
end
temp(m) = [];
dirs = temp; % Return the temporary variable.
end
Ei kommentteja:
Lähetä kommentti