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

조회 수: 4(최근 30일)
LabRat
LabRat 2022년 7월 29일
편집: Stephen23 2022년 7월 30일
%{
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.
%}

답변(1개)

Stephen23
Stephen23 2022년 7월 29일
편집: Stephen23 2022년 7월 29일
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
Stephen23
Stephen23 2022년 7월 30일
편집: Stephen23 2022년 7월 30일
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;

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by