【matlab】使用movefile批量修改命名,并保留原命名中指定的数字

【matlab】使用movefile批量修改命名,并保留原命名中指定的数字

一、情况说明

我现在有一个文件夹,我的命名是sigMMat_1.mat、sigMMat_2.mat、sigMMat_3.mat、sigMMat_69.mat,但是我发现我命名错了,要修改成sigMat_1.mat、sigMMat_2.mat、sigMMat_3.mat、sigMMat_69.mat.,即我要重命名的同时保留原命名中的下划线后面的数字。
在这里插入图片描述

二、代码示例

clear;clc;
% 指定包含.mat文件的文件夹路径
folderPath = 'path_to_your_folder'; % 文件夹路径

% 获取文件夹内所有.mat文件的列表
matFiles = dir(fullfile(folderPath, 'sigMMat_*.mat'));

% 循环遍历所有符合原始命名模式的.mat文件
for i = 1:length(matFiles)
    % 构造原始文件的完整路径
    originalFile = fullfile(folderPath, matFiles(i).name);
    
    % 使用正则表达式匹配并提取数字部分
    tokens = regexp(matFiles(i).name, 'sigMMat_(\d+).mat', 'tokens');	% 返回下划线后面的数组
    number = tokens{1}{1}; % 提取第一个捕获组,即数字部分
    
    % 构造新的文件名,使用提取的数字
    newFile = fullfile(folderPath, sprintf('sigMat_%s.mat', number));
    
    % 重命名文件
    movefile(originalFile, newFile);
end

在这里插入图片描述

通配符

fullfile(folderPath, ‘sigMMat_.mat’):fullfile函数用于构造完整的文件路径。这里它结合了folderPath和搜索模式’sigMMat_.mat’。搜索模式使用*作为通配符,匹配任何以’sigMMat_‘开头并以’.mat’结尾的文件。

正则表达式匹配 (regexp 函数):
tokens = regexp(matFiles(i).name, 'sigMMat_(\d+).mat', 'tokens');
  • regexp 是 MATLAB 中用于执行正则表达式匹配的函数。
  • 第一个参数 matFiles(i).name 是要进行匹配检查的文件名字符串。
  • 第二个参数 ‘sigMMat_(\d+).mat’ 是正则表达式模式:

sigMMat_ 匹配字符串中字面量 “sigMMat_”。
(\d+) 是一个捕获组,\d 表示数字字符(0-9),+ 表示一个或多个前面的字符。因此,\d+ 将匹配一个或多个连续数字。
.mat 匹配字符串中字面量 “.mat”。
‘tokens’ 是一个选项,指定 regexp 函数返回匹配的捕获组作为单元数组的单元数组(即二维单元数组)。

提取捕获组中的数字 (number 变量):
number = tokens{1}{1}; % 提取第一个捕获组,即数字部分

tokens 是由 regexp 函数返回的二维单元数组,其中包含了所有捕获组的内容。
tokens{1} 访问第一个捕获组(在本例中,我们关注的是文件名中的数字部分)。
tokens{1}{1} 访问捕获组中的第一个元素,这是正则表达式匹配到的第一个也是唯一的数字字符串。
这个字符串然后被赋值给变量 number。

  • 如果你的命名是sigMMat_1_20.mat、sigMMat_10_20.mat,那么可以通过下面这样的代码来提取两个数字
    % 使用正则表达式匹配并提取数字部分
    tokens = regexp(matFiles(i).name, 'sigMMat_(\d+)_(\d+).mat', 'tokens');
    number1 = tokens{1}{1}; 
    fprintf('提取的数字是: %s\n', number1);
    number2 = tokens{1}{2}; 
    fprintf('提取的数字是: %s\n', number2);

在这里插入图片描述

在这里插入图片描述

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弹伦琴的雷登

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值