You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab中筛选≥1GB的重复文件并写入Excel?

修改MATLAB脚本:仅导出≥1GB的重复文件到Excel

原脚本可检测指定目录下所有重复文件,现在调整为只处理大小≥1GB的文件,并将这类重复文件的信息导出到Excel,同时优化了原脚本的低效逻辑和拼写错误。

修改后的完整代码

root = 'C:\Users\19108\Documents';
% 获取目录下所有文件(含子目录),排除文件夹
dirlist = dir(fullfile(root, '**\*.*'));
filelist = dirlist(~[dirlist.isdir]);

% 定义1GB的字节数(按二进制计算:1024^3),若需十进制1GB可改为1e9
oneGB = 1024^3;
% 筛选出大小≥1GB的文件
large_files = filelist([filelist.bytes] >= oneGB);
if isempty(large_files)
    disp('没有找到大小≥1GB的文件');
    return;
end

% 提取文件名用于检测重复
names = {large_files.name};
% 获取唯一文件名、分组索引及重复次数
[unique_names, ~, idx] = unique(names, 'stable');
dup_mask = histcounts(idx) >= 2;
dup_names = unique_names(dup_mask);

% 收集所有重复的大文件信息
dup_file_list = [];
for name = dup_names
    file_indices = find(strcmp(names, name{1}));
    dup_file_list = [dup_file_list; large_files(file_indices)];
end

% 转换为表格并添加分组标识
dup_table = struct2table(dup_file_list);
[~, group_id] = findgroups(dup_table.name);
dup_table.GroupID = group_id;

% 写入Excel文件,可替换为自定义文件名
output_file = '大文件重复检测结果.xlsx';
writetable(dup_table, output_file);
disp(['结果已写入:', output_file]);

关键修改说明

  • 大小筛选:新增oneGB变量定义,直接过滤出字节数达标文件,减少无效计算
  • 效率优化:用unique+histcounts替代原脚本的双重循环,文件数量多时性能提升显著
  • 错误修复:修正原脚本中name(i)的拼写错误(应为names(i))
  • 分组标识:新增GroupID列,同一组重复文件会有相同ID,方便Excel中查看关联项
  • 空值处理:如果没有符合条件的大文件,直接提示并退出,避免后续报错

内容的提问来源于stack exchange,提问作者Rookie_Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:47:09