How to delete all files with a certain extension?

111 visualizaciones (últimos 30 días)
Allen Hammack
Allen Hammack el 11 de Oct. de 2022
Comentada: Allen Hammack el 13 de Oct. de 2022
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!

Respuesta aceptada

dpb
dpb el 11 de Oct. de 2022
Editada: dpb el 12 de Oct. de 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 comentarios
Stephen23
Stephen23 el 13 de Oct. de 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)
Allen Hammack
Allen Hammack el 13 de Oct. de 2022
That fixed my problem! Thank you!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre File Operations en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by