How to delete all files with a certain extension?
조회 수: 158 (최근 30일)
이전 댓글 표시
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!
댓글 수: 0
채택된 답변
dpb
2022년 10월 11일
편집: dpb
2022년 10월 12일
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
Stephen23
2022년 10월 13일
"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)
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 File Operations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!