Matlab新手求助:按文件名分类Tp/Ts系列文本文件
Matlab文本文件分类实现方案
步骤1:获取目标文件列表
先获取当前目录下所有.txt文件的名称:
allFiles = dir('*.txt'); fileNames = {allFiles.name};
步骤2:初始化分组存储容器
创建四个空数组,分别存储四个类别的文件名:
tp_angle1 = {}; ts_angle1 = {}; tp_angle2 = {}; ts_angle2 = {};
步骤3:遍历文件完成分类
利用正则表达式匹配文件名结构,自动归类:
for i = 1:length(fileNames) name = fileNames{i}; % 匹配Tp/Ts开头、包含angle1/angle2、末尾是数字+txt的文件名 matches = regexp(name, '^(Tp|Ts)_(angle[12])_\d+\.txt$', 'tokens'); if ~isempty(matches) prefix = matches{1}{1}; angle = matches{1}{2}; switch [prefix, '_', angle] case 'Tp_angle1' tp_angle1{end+1} = name; case 'Ts_angle1' ts_angle1{end+1} = name; case 'Tp_angle2' tp_angle2{end+1} = name; case 'Ts_angle2' ts_angle2{end+1} = name; end end end
可选:将文件物理归类到对应文件夹
如果需要把文件实际移动到分类文件夹,执行以下代码:
% 创建分类文件夹(不存在则新建) folders = {'Tp_angle1', 'Ts_angle1', 'Tp_angle2', 'Ts_angle2'}; for folder = folders if ~exist(folder{1}, 'dir') mkdir(folder{1}); end end % 移动文件到对应文件夹 movefile(tp_angle1, 'Tp_angle1'); movefile(ts_angle1, 'Ts_angle1'); movefile(tp_angle2, 'Tp_angle2'); movefile(ts_angle2, 'Ts_angle2');
注意事项
- 运行代码前建议先执行前三个步骤,通过
disp(tp_angle1)等命令确认分组正确,再执行移动操作 - 如果你的angle命名不是
angle1/angle2而是其他格式(比如angle30),只需修改正则表达式中的angle[12]为对应的匹配规则即可
内容的提问来源于stack exchange,提问作者narcolepticapples89
相关产品推荐
相关产品推荐

