How to replace a certain part of file name
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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?
0 Commenti
Risposte (1)
Guillaume
il 25 Lug 2018
Modificato: Guillaume
il 26 Lug 2018
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 Commenti
Guillaume
il 26 Lug 2018
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
Vedere anche
Categorie
Scopri di più su Install Products in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!