Mac终端查找重复文件应先筛大文件再MD5比对,用find ~ -type f -size +500M -exec md5 -r {} \; | sort | uniq -w 32 -D定位副本,再以MD5值二次检索路径并人工确认原始文件。

Mac终端查找系统中重复文件,核心是跳过全盘无差别扫描,先锁定大文件再用MD5比对内容指纹;盲目运行全盘find命令可能卡死、耗时数小时且结果混杂缓存和系统文件,实际有效率极低。
精准定位大文件重复项(推荐首选)
这一步操作起来很简单,直接把命令复制进终端回车就行,但必须限定路径和大小,否则会扫到/Library/Caches这类无效区域。
打开终端 → 输入以下命令(只扫描用户主目录下大于500MB的文件):
find ~ -type f -size +500M -exec md5 -r {} \; | sort | uniq -w 32 -D
命令执行后,每组开头相同的32位十六进制字符串即为同一文件的多个副本。注意:输出中每行末尾路径就是文件位置,但【不要直接删第一行就以为是原始文件】——需人工比对路径含义(如“Movies/”比“Downloads/”更可能是原始存放地)和创建时间。
复制任意一组的MD5值(32位字符),再运行:
find ~ -type f -size +500M -exec md5 -r {} \; | grep "刚粘贴的MD5" | cut -d' ' -f3-
这步会干净列出该MD5对应的所有完整路径,一行一个,方便你逐个右键→“在访达中显示”,肉眼确认哪一个是原始版本。
按名称线索快速筛出高危重复区
很多重复不是内容一致,而是命名暴露了人工操作痕迹,比如“报告_final_v2_copy.pdf”,这类文件用md5反而浪费时间,访达+终端组合更高效。
先在访达里新建智能文件夹,加条件:“名称”→“包含”→输入 copy 或 副本 或 v2 或 final。
然后打开终端,进入该智能文件夹所在路径(通常在 ~/Library/Saved Searches/ 下,文件名以 .savedSearch 结尾),但更简单的是直接用Spotlight查到该文件夹后右键→“在终端中打开”。
运行:
ls -lt | head -20
看修改时间是否密集集中在同一天或一小时内——如果是,基本可断定是批量保存或同步冲突导致,此时手动删掉带“copy”“副本”的即可,不用比对内容。
安全删除前必做的验证动作
方法一:用cmp命令两两比对
复制两个疑似重复文件的完整路径,运行:
cmp "/路径A/文件1.pdf" "/路径B/文件2.pdf"
如果终端无任何输出,说明字节完全一致;若返回“byte 12345 differs”,则内容不同,不能删。
方法二:用shasum做二次哈希校验(比md5更抗碰撞)
shasum -a 256 "/路径A/文件1.pdf" "/路径B/文件2.pdf"
两行输出的前64位字符完全相同,才可确认是真正重复。注意:【别用md5sum命令,macOS原生命令是md5,参数和Linux不同】

















