How to replace a certain part of file name

조회 수: 7 (최근 30일)
Raja Bilal Rsb
Raja Bilal Rsb 2018년 7월 25일
댓글: Raja Bilal Rsb 2018년 7월 26일
I am writing a small code to that goes through the overall directory scans for all files, and if any image file have not same name pattern it will change it.
loc = 'File Directory';
flist = dir([loc '*.png']);
for ii = 1:1:length(flist)
fname = flist(ii).name;
[~, fn, xt] = fileparts(fname);
img = imread([loc fname]);
idxs = strfind(fn, '_');
label = str2double(fn(idxs(end)+1:end));
if label ~= 0
label= 0;
ffname = fullfile(loc, num2str(label), fname); % full file name
imwrite(img, ffname);
continue;
end
My all files have file names like "m_7_13_10" with 10 being constant at the end. I want to change the 10 at end to 0. File should be in the same directory. What I am missing any one?

답변 (1개)

Guillaume
Guillaume 2018년 7월 25일
편집: Guillaume 2018년 7월 26일
Loading the images and saving them back again just to change a filename is a big waste of time. Just rename the files!
An efficient way to do that:
loc = ...
flist = dir(fullfile(loc, '*.png'));
torename = endsWith({flist.name}, '_10.png');
for file = flist(torename)'
movefile(fullfile(loc, file.name), fullfile(loc, regexprep(file.name, '_10\.png', '_0.png', 'preservecase')));
end
  댓글 수: 3
Guillaume
Guillaume 2018년 7월 26일
Ok, if you want to load the image and rename them, it's more or less the same:
loc = ...
flist = dir(fullfile(loc, '*.png'));
torename = endsWith({flist.name}, '_10.png');
for file = flist(torename)'
img = imread(fullfile(loc, file.name);
%... further processing
imwrite(img, regexprep(file.name, '_10\.png', '_0.png', 'preservecase'));
end
Raja Bilal Rsb
Raja Bilal Rsb 2018년 7월 26일
The code is still missing the important thing that not every time last part will not be same. it can be _10,_9,_8 from 0 to 10 can be any. It should convert all these to _0, and than convert the file to gray-scale and crop it to 28*28.

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

카테고리

Help CenterFile Exchange에서 Install Products에 대해 자세히 알아보기

제품


릴리스

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by