Delete files with specific names

조회 수: 68 (최근 30일)
Tali Leibovich
Tali Leibovich 2016년 5월 31일
편집: William R 2021년 10월 27일
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
Image Analyst
Image Analyst 2016년 5월 31일
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 2016년 5월 31일
it's working!! Thank you so much!!!!

댓글을 달려면 로그인하십시오.

채택된 답변

Thorsten
Thorsten 2016년 5월 31일
편집: Thorsten 2016년 5월 31일
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
Tali Leibovich
Tali Leibovich 2016년 5월 31일
Thanks!
William R
William R 2021년 10월 27일
편집: William R 2021년 10월 27일
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);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by