Delete files with specific names

66 views (last 30 days)
Tali Leibovich
Tali Leibovich on 31 May 2016
Edited: William R on 27 Oct 2021
Hello
I have a directory with files from the same type with names like:
2016_03_24_09 -0002-0001-00058.dcm
2016_03_24_09 -0002-0001-00059.dcm
2016_03_24_09 -0002-0001-00060.dcm
etc.
Based on the last 5 figures (e.g.,*00060.dcm),
I need to delete every file that ends with a number greater than 276.
Is there a way to do it in a loop?
Thanks,
Tali
  4 Comments
Image Analyst
Image Analyst on 31 May 2016
You need
for n = 1: size(files, 1)
and, since using ls gives you a character array instead of a cell array, you'll need
delete(strtrim(files(n,:)));
to trim off the extra whitespace. If you use dir() instead of ls(), you don't need to use strtrim().
Tali Leibovich
Tali Leibovich on 31 May 2016
it's working!! Thank you so much!!!!

Sign in to comment.

Accepted Answer

Thorsten
Thorsten on 31 May 2016
Edited: Thorsten on 31 May 2016
You can get the filenames using
d = dir;
filenames = {d.name};
Loop through the filenames
for i = 1:numel(filenames)
fn = filenames{i};
[num, cnt] = sscanf(fn(find(fn == '-', 1, 'last')+1:end-4), '%d');
if cnt == 1 && num > 276
disp(fn)
end
end
This just displays the files to be deleted. If everything is alright, replace
disp(fn)
with
delete fn
  4 Comments
William R
William R on 27 Oct 2021
Edited: William R on 27 Oct 2021
This code will not work since
delete fn
will try to delete a file with the name "fn". So the result will be:
Warning: File 'fn' not found.
The right way to do it can be found here.
Or in this example:
delete(fn);

Sign in to comment.

More Answers (0)

Categories

Find more on File Operations 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!