Using wildcards in dir only for strings

26 views (last 30 days)
Cl
Cl on 27 Oct 2014
Answered: Anand Swaroop on 7 Dec 2021
I have a set of files named
abc1.mat
yhs2.mat
slk3.mat
etc. I need to loop through them all and find the files with the specified number, so my initial thought was to use
dir('*',number,'*')
but this causes a problem when the numbers reach double figures. So if I search for 1, I will get 1, 10, 11, 12 etc. Is there any way of searching for just the number and removing those that I would not want?

Answers (1)

Anand Swaroop
Anand Swaroop on 7 Dec 2021
To filter out file which has a number supposed to match exactly (not partially).
We can try below code snippet.
% Your search criteria
filelist = dir(['*' num2str(number,'%d') '*']);
% Using regex to match exact number
filename = regexp({filelist.name}, ['[a-zA-Z]+' num2str(number,'%d') '[a-zA-Z.]+'], 'match');
% Removing empty cells
filename(~cellfun('isempty',filename))
When we are using dir(),we cannot do much solely using wild characters. So, we must use some alternate solution. Hope this will solve your problem.
Best Regards,
Anand Swaroop

Categories

Find more on File Operations in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!