changing the name of multiple csv files in a folder

14 ビュー (過去 30 日間)
C.G.
C.G. 2021 年 1 月 15 日
コメント済み: Stephen23 2021 年 1 月 15 日
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?

採用された回答

Mathieu NOE
Mathieu NOE 2021 年 1 月 15 日
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 件のコメント
Mathieu NOE
Mathieu NOE 2021 年 1 月 15 日
my pleasure !
Stephen23
Stephen23 2021 年 1 月 15 日
Rather than fragile indexing, it better to use fileparts to split the filename and file extension:

サインインしてコメントする。

その他の回答 (1 件)

Matt Gaidica
Matt Gaidica 2021 年 1 月 15 日
編集済み: Matt Gaidica 2021 年 1 月 15 日
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 件のコメント
Stephen23
Stephen23 2021 年 1 月 15 日
This SPRINTF call does not use its inputs for anything:
new = sprintf('c0_1f0_1.csv',ii,jj)
C.G.
C.G. 2021 年 1 月 15 日
編集済み: C.G. 2021 年 1 月 15 日
I understand sprintf, but i am struggling to write a loop to do this.
I have started using Mathieu's code below, but this reaches 10 iterations and stops even though it identifies 3001 csv's

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeEnvironment and Settings についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by