How can I recursively process files in subdirectories using MATLAB?

51 ビュー (過去 30 日間)
How can I recursively process files in subdirectories using MATLAB?
I have files located in multiple subdirectories within a directory. I would like to be able to process the data in each subdirectory using the same functions. How can I do this without having to manually run the code in each directory?

採用された回答

MathWorks Support Team
MathWorks Support Team 2023 年 5 月 12 日
編集済み: MathWorks Support Team 2023 年 5 月 12 日
The first task is to get a list of all the desired files in all of the subdirectories.
One option to do this is to use a "system" call to access the Operating System recursive directory search call. For example to get all ".m" files in "C:\Program Files\MATLAB" on Windows:
baseDir = 'C:\"Program Files"\MATLAB'
[status, list] = system(['dir/s/b ' baseDir '*.m']);
This produces a different output format than "dir" but it can be parsed to perform the same tasks.
Another option is to process the files in a directory hierarchy through the use of recursive functions. The general format is:
1) Call the recursive function with the name of a directory.
2) Use the "dir" function to obtain a listing of the directory.
3) Loop through the entries in the listing.
4) If an entry is a directory, then call the function recursively, passing the subdirectory's name as the directory to process.
5) If an entry is not a directory, then store the file path including filename.
Please find an example file in the MATLAB File Exchange submission "subdir":
Or the example file on the File Exchange "rdir":
Note that MathWorks does not guarantee or warrant the use or content of these submissions. Any questions, issues, or complaints should be directed to the contributing author.
Once a list of files has been gathered through one of these methods, the files can be processed.

その他の回答 (1 件)

lvn
lvn 2020 年 3 月 11 日
It is high time Matlab updates some of the official answers, as many are outdated.
This is an example, as of R2016b, no need for external tools:
files=dir('C:\temp\**\*.txt');
for k=1:length(files)
fn=fullfile(files(k).folder, files(k).name);
%process the file fn here
end

カテゴリ

Help Center および File ExchangeFile Operations についてさらに検索

製品


リリース

R2014a

Community Treasure Hunt

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

Start Hunting!

Translated by