stringcmp filenames with similar naming

2 views (last 30 days)
LabRat on 25 Jul 2022
Commented: LabRat on 29 Jul 2022
Is there a good way to match files from different folders together?
I am considering using stringcmp, to load two different files together, but I am not sure how to approach this. Would you first use a for loop for recursion to search all folders and files one string character at a time? If so, what would be the matlab syntax?
LabRat on 25 Jul 2022
Hi Matt, yes I am looking to match files with a portion of the string matching from both files. I found the 'contains' and 'strfind' functions so far. Still working on how to use these correctly.

Sign in to comment.

Answers (1)

Voss on 26 Jul 2022
Edited: Voss on 26 Jul 2022
"Is there a good way to match files from different folders together?"
Here's an approach using dir, fullfile, fileparts, strcat, and intersect that does what it seems like you are asking for:
% create some txt files in two directories:
rng(1000); % (for reproducibility of the random file names)
dirs = {'folder_1','folder_2/subfolder'};
for ii = 1:numel(dirs)
for jj = randi(10,1,7)
% get info about txt files in those two directories:
files_1 = dir(fullfile(dirs{1},'*.txt'));
names_1 = fullfile(dirs{1},{}.')
names_1 = 7×1 cell array
{'folder_1/file_001.txt'} {'folder_1/file_002.txt'} {'folder_1/file_003.txt'} {'folder_1/file_005.txt'} {'folder_1/file_007.txt'} {'folder_1/file_009.txt'} {'folder_1/file_010.txt'}
files_2 = dir(fullfile(dirs{2},'*.txt'));
names_2 = fullfile(dirs{2},{}.')
names_2 = 5×1 cell array
{'folder_2/subfolder/file_002.txt'} {'folder_2/subfolder/file_003.txt'} {'folder_2/subfolder/file_004.txt'} {'folder_2/subfolder/file_008.txt'} {'folder_2/subfolder/file_009.txt'}
% use fileparts to get just the names (with extensions):
[~,fn_1,ext_1] = fileparts(names_1);
fn_1 = strcat(fn_1,ext_1)
fn_1 = 7×1 cell array
{'file_001.txt'} {'file_002.txt'} {'file_003.txt'} {'file_005.txt'} {'file_007.txt'} {'file_009.txt'} {'file_010.txt'}
[~,fn_2,ext_2] = fileparts(names_2);
fn_2 = strcat(fn_2,ext_2)
fn_2 = 5×1 cell array
{'file_002.txt'} {'file_003.txt'} {'file_004.txt'} {'file_008.txt'} {'file_009.txt'}
% use intersect to find which file names are in both directories:
ans = 3×1 cell array
{'file_002.txt'} {'file_003.txt'} {'file_009.txt'}
If this is not what you want to do, clarify what you want to do.
  1 Comment
LabRat on 29 Jul 2022
Hello, thanks for your repsonse. I tried to clarify here:

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!

Translated by