How to delete all files with a certain extension?

57 views (last 30 days)
I have a directory with several .png files that I would like to delete in a script. I have the following script that I have modified from a script I found in the Matlab forums:
d = dir(file_path);
file_names = {}';
count = 1;
for jj = 1:length(file_names)
pngFilePattern = char(fullfile(file_path,'*.png'));
pngFiles = dir(pngFilePattern);
count = 1;
for kk = 1:length(pngFiles)
pngBaseFileName = pngFiles(kk).name;
pngFullFileName = fullfile(pngFiles(kk).folder,pngBaseFileName);
count = count + 1;
I've simplied this script by just using "file_path" in this forum post instead of the full path of the file. This code seems to work (all my .png files get deleted), but I think I may have a problem in this script because I can't get "count" to equal the number of files in the directory that I want to delete. The final value of "count" is several multiples of the number of .png files that need to be deleted.
Can someone please tell me how I can modify (and hopefully simplify) this script, so I can make sure that only the .png files that to be deleted are deleted?
Thank you!

Accepted Answer

dpb on 11 Oct 2022
Edited: dpb on 12 Oct 2022
Because your count variable is being incremented in the outer loop which is running over a dir() list of all files (including subdirectory names and the two "dot" directory entries), not just over the *.png files.
If you're only worried about the single directory, you don't need (and don't want) the outer loop; just use
count = numel(pngFiles);
for i=1:count
But, you don't need to iterate over all files, simply
delete *.png
will do the trick in the current directory or
wipes 'em all out in the subject directory.

Sign in to comment.

More Answers (0)


Find more on Search Path 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!

Translated by