how to rename a bunch of csv files in a folder

3 visualizaciones (últimos 30 días)
Sara
Sara el 7 de En. de 2019
Comentada: Sara el 7 de En. de 2019
Hello,
I have a folder containing several subfolders in which there are bunch of csv files.
I want to rename the csv files in this format. X_Y_subfolder's number_0file's number00. For example, the name of the files in first subfolder and second subfolders should be as following:
Subfolder1) X_Y_1_0100, X_Y_1_0200,...
Subfolder2) X_Y_2_0100, X_Y_2_0200,....
I appreciate any help.
  4 comentarios
Jan
Jan el 7 de En. de 2019
Did you try to solve the problem by your own at first? Then please post the existing code and ask a specific question.
You need a dir command to obtain a list of subfolders, then a loop over the subfolders and another dir command to get the file names. Then sprintf will create the new file names and movefile renames the files.
Sara
Sara el 7 de En. de 2019
Yes. I've tried dir and movefile but I've got error. I did not use sprintf. I will try this command.
Thanks

Iniciar sesión para comentar.

Respuestas (3)

Image Analyst
Image Analyst el 7 de En. de 2019
Code is in the FAQ: click here
put a call to movefile() to rename the files.
ALso see attached code to recursivley go through all subfolders.

Image Analyst
Image Analyst el 7 de En. de 2019
Another way is to simply use the fileDatastore() function to get a list of all files in all subfolders. In fact, this may be the easiest way, then just loop over the filenames calling movefile().

Sara
Sara el 7 de En. de 2019
I rename all files with this code. It is not the best solution nor the professional one, but it works for my case .
Thanks.
S = dir('mymainfolderpath');
a=sum([S(~ismember({S.name},{'.','..'})).isdir]); %%numbers of subfolders
for i = 1:a
n=[(num2str(i))]
cd(fullfile('mymainfolderpath',n)) %% the names of my subfolders are 1,2,...
files=dir('*.csv')
for j = 1:length(files)
name= ['X_Y_',(num2str(i)),'_0',(num2str(j)),'00','.csv']
movefile (files(j).name,name);
end
end
  2 comentarios
Stephen23
Stephen23 el 7 de En. de 2019
It is better to avoid using cd, e.g.
D = 'mymainfolderpath';
S = dir(D);
N = setdiff({S([S.isdir]).name},{'.','..'});
for ii = 1:numel(N)
T = dir(fullfile(D,N{ii},'*.csv'));
for jj = 1:numel(T)
old = fullfile(D,N{ii},T(jj).name);
new = sprintf('X_Y_%d_0%d00.csv',ii,jj);
movefile(old,new)
end
end
Note that with sprintf you can easily change the format of the subfolder/file numbers, e.g. how many digits, leading zeros, etc.
Sara
Sara el 7 de En. de 2019
Dear Stephen,
Thanks for your comments. Actually, I am beginner but, whenever I ask a question I learn a lot from the experts.
thanks again for your useful comments

Iniciar sesión para comentar.

Categorías

Más información sobre File Operations en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by