Using contains() with dir() to search files in folder

2 views (last 30 days)
%{
trying to figure out how to search a folder for a file that contains a
matching string
serials is a 1x26 cell
%}
files_in_folder = dir('folder');
TF = contains(files_in_folder.name, serials);
%{
Error using contains
Incorrect number of arguments. Each parameter name must be followed by
a corresponding value.
%}
TF = contains(files_in_folder.name, serials(1))
%{
Error using contains
Incorrect number of arguments. Each parameter name must be followed by a
corresponding value.
%}
for i = files_in_folder
if TF == 1
File = strcat('example.txt');
end
end
%{
trying a few different variations:
%}
for i = files_in_folder
if contains(files_in_folder, serials) == 1
disp(serials);
end
end
for i = files_in_folder.name
if contains(files_in_folder.name, serials) == 1
disp(short_serials);
end
end
%{
A dot '.' indexing expression produced a comma-separated list with 15
values where only a single value is allowed.
%}

Answers (1)

Stephen23
Stephen23 on 29 Jul 2022
Edited: Stephen23 on 29 Jul 2022
Replace this comma-separated list
files_in_folder.name
with this cell array of filenames:
{files_in_folder.name}
S = dir(..);
TF = contains({S.name}, serials);
  2 Comments
Stephen23
Stephen23 on 30 Jul 2022
Edited: Stephen23 on 30 Jul 2022
Rather than using a loop, you should simply use that index directly. For example:
TF = contains({files_in_folder.name}, app.SelectTestID.Value);
assert(nnz(TZ)==1,'Exactly one filename must match')
VideoFile = files_in_folder(TF).name;

Sign in to comment.

Categories

Find more on File Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!