MATLAB Answers

How to access all subdirectorie?

5 views (last 30 days)
MINA
MINA on 6 Mar 2018
Commented: MINA on 6 Mar 2018
I want to find all subfolders in a folder. I know how to do it for one step but I want to do it recursively until it finds all sub-subdirectories. Example: I am at 'M:\F1' . And suppose I have F1_1 and F1_2 folders in there which I can have access with the following code
files = dir('M:\F1')
% Get a logical vector that tells which is a directory.
dirFlags = [files.isdir] & ~strcmp({files.name},'.') & ~strcmp({files.name},'..')
% Extract only those that are directories.
subFolders = files(dirFlags)
I have another folder in F1_1 called F1_1_1 and one folder in that called F1_1_1_1. How can I recursively find the path to these two folders, i.e.,
M:\F1\F1_1_1
M:\F1\F1_1_1\F1_1_1_1
  2 Comments
MINA
MINA on 6 Mar 2018
Thanks for the answer.

Sign in to comment.

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 6 Mar 2018
Use dir(fullfile('M:\F1','**/*.*')). It will list everything in the folder and all sub-folders.

More Answers (3)

Paul Shoemaker
Paul Shoemaker on 6 Mar 2018
Edited: Paul Shoemaker on 6 Mar 2018
Newer version of Matlab allow dir to operate recursively. Simply modify your original dir call like so:
files = dir(['M:' filesep 'F1' filesep '**/*.*']);
Then do your filtering on dirFlags as you've done. Voila!
Note: If you check out the help for dir you'll see other techniques to filter in different ways, such as only searching one level down.
Paul Shoemaker


MINA
MINA on 6 Mar 2018
I also found to do the following
dirs = regexp(genpath('M\F1'),['[^;]*'],'match');

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!