Extract files with the same names in subfolders and save them into a new folder with a different name

41 views (last 30 days)
I have .png files with the same name stored in different folders. My goal is to rename and copy them into a new folder. The following code just saves the last image in the new folder. I am not able to figure out how to save PNG files with incremental values in name. I would appreciate any help. Thanks in advance.
myFolder = 'current folder path';
filePattern = fullfile(myFolder, '**/*.png');
theFiles = dir(filePattern);
numFiles = length(theFiles);
outputFolder = 'new folder path';
for K = 1 : numFiles
baseFileName = theFiles(K).name;
fullFileName = fullfile(theFiles(K).folder,baseFileName);
limages = imread(fullFileName);
fullFileName = fullfile(outputFolder, theFiles(K).name);
Shourya on 15 Apr 2022
Edited: Shourya on 15 Apr 2022
@Walter Roberson Thank you for your response. There are no such requirements. I just want to retrieve and store all the files in a single folder. A number before the file extension with underscore is also fine. My files in subfolders are named as output_img.png.

Sign in to comment.

Accepted Answer

per isakson
per isakson on 15 Apr 2022
myFolder = 'current folder path';
filePattern = fullfile(myFolder,'**','*.png');
theFiles = dir(filePattern);
numFiles = length(theFiles);
outputFolder = 'new folder path';
mkdir( outputFolder )
for K = 1 : numFiles
source_file = fullfile( theFiles(K).folder, theFiles(K).name );
target_name = sprintf( '%s_%03d.png', theFiles(K).name, K ); % less than 999 files
target_file = fullfile( outputFolder, target_name );
copyfile( source_file, target_file );
And some error handling and testing.

Sign in to comment.

More Answers (0)


Find more on Environment and Settings 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!