MATLAB Answers

looping though multiple sub-directories

4 views (last 30 days)
Ben
Ben on 18 Jul 2019
Commented: Rik on 19 Jul 2019
I would like to recursively proces files in subdirectories using MATLAB. I have three subject-specific subdirectories (sub_001, sub_002, sub_003) in a main directory, A, each of which contains a .nii file, B.
In linux, this is possible using a for loop with a .txt file containg a listing of the main directory. For example:
for i in `cat list.txt`; do mv /A/$i/B /path/to/new/destination; done
Can the same be acheived in MATLAB? Essentially, the only thing that needs to change in each iteration is the subject's directory.
Thank you,
Ben

  0 Comments

Sign in to comment.

Answers (2)

Rik
Rik on 18 Jul 2019
Yes, you just need to load your text file with your paths, and then loop over the contents. If you need help with loading the text file, you can post an example.

  2 Comments

Ben
Ben on 19 Jul 2019
I don't understand how to load the .txt file with the path. I can't find reference to this online.
Rik
Rik on 19 Jul 2019
Reading a file is not a difficult task in Matlab. If you Google it you're bound to find dozens of examples. If you use a function like my readfile FEX submission, then you can use the resulting cell array directly in a loop.
You can also directly read all nii files with the code Jan showed you.

Sign in to comment.


Jan
Jan on 19 Jul 2019
FileList = dir('C:\Base\Folder\**\*.nii');
for k = 1:numel(FileList)
File = fullfile(FileList(k).folder, FileList(k).name);
...
end

  0 Comments

Sign in to comment.

Sign in to answer this question.