changing the name of multiple csv files in a folder
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    C.G.
 el 15 de En. de 2021
  
    
    
    
    
    Comentada: Stephen23
      
      
 el 15 de En. de 2021
            I have a folder containing 3000 csv files. All of these are named in the format: cor0.1 sc10 fc0.1_0.csv.
I want to change the name of all of these files to  c0_1f0_1_0.csv.
Is there a way i can write a loop to do this for me?
0 comentarios
Respuesta aceptada
  Mathieu NOE
      
 el 15 de En. de 2021
        hello 
this is a first attempt 
I prefered to create the renamed copies in a separate folder 
also my code will probably need some upgrade as I don't know how the numberring inside your filenames can evolve among your 3000 files 
d = dir('*.csv')
dir_out = [cd '\out']
for ci = 1:numel(d)
    filename = d(ci).name;
    ind_und = strfind(filename,'_'); % search underscores 
    ind_dot = strfind(filename,'.'); % search dots 
    ind_f = strfind(filename,'f');  % search "f" 
    new_filename = [filename(1) filename(ind_dot(1)-1) '_' filename(ind_dot(1)+1) filename(ind_f ),...
        filename(ind_dot(2)-1) '_' filename(ind_dot(2)+1) '_' filename(end-4:end)];
    copyfile(filename,fullfile(dir_out,new_filename));
end
9 comentarios
  Stephen23
      
      
 el 15 de En. de 2021
				Rather than fragile indexing, it better to use fileparts to split the filename and file extension:
Más respuestas (1)
  Matt Gaidica
      
 el 15 de En. de 2021
        
      Editada: Matt Gaidica
      
 el 15 de En. de 2021
  
      csvPath = '/path/to/files';
filelist = dir(fullfile(csvPath,'*.csv'));
for iFile = 1:numel(fileList)
    thisFile = fullfile(csvPath,fileList(iFile).name);
    movefile(thisFile, strrep(thisFile,'old','new'));
end
This is just psuedocode. I don't quite see how you're mapping the old filename to the new one, so I just placed a string replace function in the loop. If you need help on that piece, please post more details.
See:
6 comentarios
  Stephen23
      
      
 el 15 de En. de 2021
				This SPRINTF call does not use its inputs for anything:
new = sprintf('c0_1f0_1.csv',ii,jj)
Ver también
Categorías
				Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



