- FOLDER1 and FOLDER3
 - FOLDER2 and FOLDER4
 
finding same pattern files from two different folders and copying to other folders
    3 views (last 30 days)
  
       Show older comments
    
Hi everyone,
I have two different folders (Folder 1 and Folder 2) that contain netcdf files from two different fields (UV, and ST) with 3hour-internal outputs. Those files are named as yyyyMMddHH patterns. At some steps, some files   are missing. Therefore, I need to find files having the same time steps (same yyyyMMddHH)  from each folder and copying into other folders (Folder 3 and Folder 4) respectively.  An illustration is attached.
Could you please help?
Thanks

3 Comments
  per isakson
      
      
 on 21 May 2020
				
      Edited: per isakson
      
      
 on 21 May 2020
  
			Problem is, I fail to deduce the rule that determines which files to copy; the highlighted files. Why should *_2001010100 be copied?
Accepted Answer
  Stephen23
      
      
 on 21 May 2020
        
      Edited: Stephen23
      
      
 on 21 May 2020
  
      Read the folder contents using dir.
Extract the timestamps (e.g. regexp or indexing)
Call intersect on the timestamps, returninng both indices.
Use the indices to copy the files using copyfile in a loop.
Something like this (untested, but should get you started):
D1 = 'absolute/relative path to the 1st folder';
D2 = 'absolute/relative path to the 2nd folder';
S1 = dir(fullfile(D1,'*_*.nc'));
S2 = dir(fullfile(D2,'*_*.nc'));
C1 = {S1.name};
C2 = {S2.name};
T1 = regexp(C1,'\d+','match','once'); % extract timestamps
T2 = regexp(C2,'\d+','match','once'); % extract timestamps
[~,X1,X2] = intersect(T1,T2); % identify common timestamps
D3 = 'absolute/relative path to the 3rd folder';
D4 = 'absolute/relative path to the 4th folder';
for k = 1:numel(X1)
    F1 = C1{X1(k)};
    F2 = C2{X2(k)};
    copyfile(fullfile(D1,F1),D3)
    copyfile(fullfile(D2,F2),D4)
end
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!