selecting filenames from a dir list
2 次查看(过去 30 天)
显示 更早的评论
I'm trying to create a subset of file names from a dir listing when many of the files have similar naming structures. for example I use the code:
dirname=pwd;
dirData=dir(dirname);
dirIndex=[dirData.isdir];
fileList={dirData(~dirIndex).name};
and I get a complete listing of the files.
Unfortunately, my files are named:
"Template_001.asc"
"Template_001_spent_fuel_tank1.asc"
"Template_001_spent_fuel_tank2.asc"
"Template_001_payload.asc"
"Template_002.asc" and so on through "Template_999_payload.asc"
What I need to do is create a matrix/array of just the files that have the base name of
"Template_001.asc"
"Template_002.asc"
"Template_003.asc"
...
"Template_999.asc"
from the populated fileList variable.
Any help would be greatly appreciated.
3 个评论
dpb
2014-2-7
编辑:dpb
2014-2-7
But if they're in the list you're returning from the previous dir() call, then with the proper wildcard matching they'll be the ONLY ones returned thus eliminating the need to do the selection after the fact.
Solve the problem by avoiding the problem in the first place.
Of course, if you're adamant of going at it the hard way, you can do pattern-matching on the content of the array similarly, but why make it more complex than needs be?
采纳的回答
Azzi Abdelmalek
2014-2-7
编辑:Azzi Abdelmalek
2014-2-7
A={'Template_001.asc'
'Template_001_spent_fuel_tank1.asc'
'Template_001_spent_fuel_tank2.asc'
'Template_001_payload.asc'
'Template_002.asc'}
out=A(~cellfun(@isempty,regexp(A,'.+(?<=_\d{3}\.asc)','match')))
3 个评论
更多回答(1 个)
dpb
2014-2-7
Far simpler would be to simply return the ones you want...
d=dir([dirname\template_???.asc");
for i=1:length(d)
%process file d.name(i) here
...
Build an appropriate filter for whichever subset you want.
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!