How to delete all files with a certain extension?

107 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 = {d.name}';
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);
delete(pngFullFileName)
end
count = count + 1;
end
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
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
pngFiles=dir(fullfile(file_path,'*.png');
count = numel(pngFiles);
for i=1:count
delete(fullfile(pngFiles(i).folder,pngFiles(i).name);
end
But, you don't need to iterate over all files, simply
delete *.png
will do the trick in the current directory or
delete(fullfile(fullfile(file_path,'*.png'))
wipes 'em all out in the subject directory.
  3 Comments
Stephen23
Stephen23 on 13 Oct 2022
"Do you see what I'm messing up?"
You omitted '*.png' from the FULLFILE command.
(it is not an input to the DELETE command as you attempted)

Sign in to comment.

More Answers (0)

Categories

Find more on File Operations in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!