extracting files having names with the same date from a dataset

1 view (last 30 days)
I am having some txt files as a training dataset for a modele I'm trying to build.
if we asumed that the txt files names has the format YYYYMMDDHHmm as 196611110428.
if I would like to extract files that have the month=12, day=05, hour=22. discarding the years and the minutes, How I can possibly do that?

Accepted Answer

Stephen23 on 31 Jan 2022
Edited: Stephen23 on 31 Jan 2022
Here is one approach, tested on the attached files:
P = '.'; % absolute or relative path to where the files are saved
S = dir(fullfile(P,'*.txt'));
[~,F,~] = fileparts({S.name});
T = datetime(F,'InputFormat','uuuuMMddHHmm');
X = T.Month==12 & T.Day==5 & T.Hour==22
X = 1×6 logical array
0 1 1 0 0 1
{S(X).name} % training set
ans = 1×3 cell array
{'196612052228.txt'} {'196612052258.txt'} {'202212052228.txt'}
{S(~X).name} % not training set
ans = 1×3 cell array
{'196611110428.txt'} {'196612110428.txt'} {'202211110428.txt'}

More Answers (2)

Walter Roberson
Walter Roberson on 31 Jan 2022
dinfo = dir('*120522.txt');
filenames = {dinfo.name};
  1 Comment
Stephen23 on 31 Jan 2022
Edited: Stephen23 on 31 Jan 2022
That does not take into account the minutes.
Adding another asterisk will not fix that ... if only DIR supported ? to match one character :(

Sign in to comment.

Sambit Supriya Dash
Sambit Supriya Dash on 31 Jan 2022
a = 196611110428;
strA = string(a);
d = datetime(strA,'InputFormat','yyyyMMddHHmm');
Month = month(d);
Day = day(d);
Hour = hour(d);

Community Treasure Hunt

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

Start Hunting!