Filter a directory and add in listbox only files with TIF/TIFF and containing a certain String
7 ビュー (過去 30 日間)
古いコメントを表示
Hello, I am trying to list all tif images ina folder into a listbox. I have it working but am trying to now only list those tif files that also contain a string in their name:
I initially choose the first file (using uigetfile so have the extension, path and filename)
%List all tif images into the list box.
[pathstr,name,ext] = fileparts(openpath);
filePattern = fullfile(pathstr, ['*',ext])
myFiles = dir(filePattern);
ListOfImageNames = {}; % Initialize
for Index = 1:length(myFiles)
% Get the base filename and extension.
baseFileName = myFiles(Index).name;
[folder, name, extension] = fileparts(baseFileName);
% Examine extensions for ones we want.
extension = upper(extension);
switch lower(extension)
case {'.tif','.tiff'}
% Keep only JPG, TIF, or tiff image files.
ListOfImageNames = [ListOfImageNames baseFileName];
% otherwise
end
end
% Now we have a list of validated filenames that we want.
% Send the list of validated filenames to the listbox. %ListOfImageNames;
app.ListBox.Items=ListOfImageNames;
So I thought if I have a string 'NameFilter', then all I need to do is change
filePattern = fullfile(pathstr, ['*',ext])
To
filePattern = fullfile(pathstr, [Namefilter,'*',ext])
But its not quite working. so to summarise, I only want tiff files which contain the string NameFilter
Thanks
Jason
0 件のコメント
採用された回答
Walter Roberson
2021 年 2 月 7 日
pathstr = fileparts(openpath);
myFiles = dir(pathstr);
filenames = {myFiles.name};
mask = endsWith(filenames, {'.tif', '.tiff'}, 'IgnoreCase', true);
ListOfImages = filenames(mask);
2 件のコメント
Walter Roberson
2021 年 2 月 7 日
mask = mask & beginsWith(filenames, Namefilter);
With or without the 'IgnoreCase' option as appropriate.
その他の回答 (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!