I have to rename files that is placed inside the folder, for e.g. in the below shown example 080 needs to be replaced as 020.. Any help ??
1_ss_ddd_080_y000.txt
1_ss_ddd_080_y001.txt
1_ss_ddd_080_y002.txt

 Accepted Answer

Voss
Voss on 23 Mar 2022
Edited: Voss on 23 Mar 2022
old_file_names = { ...
'1_ss_ddd_080_y000.txt', ...
'1_ss_ddd_080_y001.txt', ...
'1_ss_ddd_080_y002.txt'};
new_file_names = strrep(old_file_names,'080','020');
for ii = 1:numel(old_file_names)
movefile(old_file_names{ii},new_file_names{ii});
end

5 Comments

Thanks, actually there are 100 files not just 3 files.. Is there any way to rename all the files in the directory ??
1_ss_ddd_080_y000.txt
1_ss_ddd_080_y001.txt
1_ss_ddd_080_y002.txt
.
.
.
.
1_ss_ddd_080_y100.txt
Voss
Voss on 23 Mar 2022
Edited: Voss on 23 Mar 2022
The loop works the same whether there are 3 or 100 or 100000 files.
However, one thing to consider is whether MATLAB's working directory is the directory where the files are. Because if not, you ned to refer to the files by their full paths. This renames all the .txt files in the directory your_directory:
your_directory = 'C:\path\to\some\folder';
s = dir(fullfile(your_directory,'*.txt'));
old_file_names = fullfile(your_directory,{s.name});
new_file_names = fullfile(your_directory,strrep({s.name},'080','020'));
for ii = 1:numel(old_file_names)
movefile(old_file_names{ii},new_file_names{ii});
end
End up with below error
Error using movefile
Cannot copy or move a file or directory onto itself.
Voss
Voss on 23 Mar 2022
Edited: Voss on 23 Mar 2022
I guess one of the files didn't have '080' in the name (possibly because it was already renamed by a previous run of this code).
To handle that situation, I skip the file in that case:
your_directory = 'C:\path\to\some\folder';
s = dir(fullfile(your_directory,'*.txt'));
old_file_names = fullfile(your_directory,{s.name});
new_file_names = fullfile(your_directory,strrep({s.name},'080','020'));
for ii = 1:numel(old_file_names)
if strcmp(old_file_names{ii},new_file_names{ii})
continue
end
movefile(old_file_names{ii},new_file_names{ii});
end
It's perfect now... Thanks a lot..

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!