How to access all subdirectorie?

11 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

Elias Gule
Elias Gule on 6 Mar 2018
See this for an example.

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

Categories

Find more on File Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!