Run a script for all subfolders
5 次查看(过去 30 天)
显示 更早的评论
Hi
I have a script and I want to rut it for a folder. I should say that the folder has subfolders. The folder structure is like below:
'rocording\myproject\020320 (it is a date)\XYdata'
the first two folders are same but I have many folders for third subfolder (different dates) and one 'XYdata' folder inside each date folder.
I want to run my script for the text files inside the XYdata subfolders.
0 个评论
采纳的回答
Benjamin Großmann
2020-3-9
You can use the asterisk (*) as wildcard to generate a file pattern and the dir command to get a struct of all the matching files. Assuming we are in the directory where the rocording folder is located and your data are mat-files:
file_pattern = './rocording/myproject/*/xydata/*.mat';
data_dir = dir(file_pattern);
data_locations = fullfile({data_dir.folder}, {data_dir.name})
Then you can use fullfile to obtain a cell array of file locations. Now you can loop over this cell or use cellfun to do stuff with all the data.
更多回答(1 个)
Adam Danz
2020-3-9
Try this out,
mainDir = 'C:\Users\name\Documents\MATLAB\rocording\myproject'; % <-- replace with your real path
% Get a list of content
content = dir(mainDir);
% Remove content that isn't a subdirectory
subDirs = {content.name}';
content(~[content.isdir]' | startsWith(subDirs, '.')) = [];
% Loop through each subdirectory
for i = 1:numel(content)
% Create full path to the XYdata directory
fullpath = fullfile(content(i).folder, content(i).name, 'XYdata');
% Test that it exists
assert(exist(fullpath,'dir')==7, ['Directory doesn''t exist: ', fullpath])
% Use fullpath for your script.
% To add filename, file = fullfile(fullpath, 'myFile.mat');
end
5 个评论
Adam Danz
2020-3-9
Ah, if the subfolder structure isn't consistent then the wildcard method is the way to go.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!