How to search and log file locations of specific extension in a folder and its subfolders?
13 ビュー (過去 30 日間)
古いコメントを表示
I have test results form a model testing that are available as a specific file with .aka extension. But the files are inside a main folder and its sub directories.



Now as the files are inside subdirectories, To import the data into MATLAB, I am using individual file location to import.
datafile(1) = "C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm04hz.aka";
datafile(2) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm05hz.aka';
datafile(3) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm06hz.aka';
datafile(4) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm07hz.aka';
datafile(5) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm08hz.aka';
datafile(6) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm09hz.aka';
datafile(7) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm10hz.aka';
datafile(8) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm11hz.aka';
datafile(9) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm12hz.aka';
datafile(10) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm13hz.aka';
datafile(11) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm14hz.aka';
datafile(12) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\20mm amp\\20mm04hz.aka';
datafile(13) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\20mm amp\\20mm06hz.aka';
datafile(14) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\20mm amp\\20mm08hz.aka';
datafile(15) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz05ori.aka';
datafile(16) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz10ori.aka';
datafile(17) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz15ori.aka';
datafile(18) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz20ori.aka';
datafile(19) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz25ori.aka';
datafile(20) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz30ori.aka';
datafile(21) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz35ori.aka';
datafile(22) = 'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\damping hunt\\30mm08hz40ori.aka';
How can I do this in a way so that I don't have to write these files in this manner?
0 件のコメント
採用された回答
Voss
2022 年 4 月 9 日
編集済み: Voss
2022 年 4 月 9 日
It's a little difficult to know exactly how to do it without knowing if there are any .aka files anywhere in "tank lab results" that should be excluded (e.g., in "\tank lab results\25 mm orifice\others" ?), but here's a couple of bits of code you can refer to and maybe adapt to get exactly the set of file names you need:
If you want to get a list of all .aka files anywhere in "tank lab results" (including all of its descendent directories), you can do this:
main_dir = 'C:\Users\akash\Documents\MATLAB\OceanCA2\tank lab results';
files = dir(fullfile(main_dir,'**','*.aka'));
datafiles = fullfile({files.folder},{files.name});
If instead you want to get a list of all .aka files in specific child directories of "tank lab results" (including all of their descendent directories), you can do this:
main_dir = 'C:\Users\akash\Documents\MATLAB\OceanCA2\tank lab results';
sub_dirs = {'25 mm orifice' 'damping hunt'};
files = [];
for ii = 1:numel(sub_dirs)
files = [files; dir(fullfile(main_dir,sub_dirs{ii},'**','*.aka'))];
end
datafiles = fullfile({files.folder},{files.name});
Also, I should point out that datafiles here is a cell array of full path file names without the double-backslashes (\\) delimiting the directories. If subsequent code using datafiles expects the double-backslashes, it's probably best to modify that code to work with standard full path file names, e.g.:
datafiles = {'C:\\Users\\akash\\Documents\\MATLAB\\OceanCA2\\tank lab results\\25 mm orifice\\30mm amp\\30mm04hz.aka'};
fprintf(datafiles{1})
datafiles = {'C:\Users\akash\Documents\MATLAB\OceanCA2\tank lab results\25 mm orifice\30mm amp\30mm04hz.aka'};
fprintf('%s',datafiles{1})
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で File Operations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!