Mac 上怎么找出占用空间的重复文件?
在 macOS 终端里定位并清理字节级重复文件:先按大小排文件夹,再用校验和列出重复项,批量删除后验证释放的空间。
快速开始
重复的下载文件、复制过的照片、同步产生的副本会悄悄堆积,直到磁盘被塞满。本指南带你一步步来:先弄清空间去哪儿了,再用校验和找出真正的重复文件,最后安全地从终端删除它们。
症状
先弄清楚哪些文件夹最占空间
在查找重复文件之前,先看看空间到底去哪儿了。把用户目录下各个顶级文件夹按大小排名,就能知道该重点排查哪里(下载、文稿、照片等)。命令跑完后,最大的文件夹排在最前面,就从那里开始找重复文件。
du 统计文件夹大小,配合 sort -rh 排序和 head 截取,一眼看出占用空间最多的目录。
$ du -xsh ~/* 2>/dev/null | sort -rh | head -15深入可疑文件夹内部
选定最可能堆满重复文件的文件夹后(「下载」往往是重灾区),把它的子文件夹按大小排个序。这样可以缩小搜索范围,让后面的校验和扫描跑得更快,也让你集中精力在真正占空间的地方。命令完成后,你会看到按大小排序的列表,最大的子文件夹排在最后。
以人类可读的单位列出当前目录下每个文件夹的大小,并从小到大排序。
$ du -sh */ | sort -h用校验和找出真正的重复文件
文件名字不同,内容却可能一模一样。通过校验和比对可以找出所有字节级相同的副本,让你明确知道哪些文件可以安全删除。先 cd 进入前面定位到的文件夹,再运行校验和列单。输出的每个路径都属于某个重复组,这些就是可以回收的副本。
即使文件名不同,也能找出内容完全相同的重复文件。
$ cd ~/Downloads && find . -type f -not -name ".DS_Store" -exec md5 -r {} + | sort | awk '{c[$1]++; f[$1]=$2} END {for (h in c) if (c[h]>1) print f[h]}'批量删除重复副本
拿到重复文件清单后,用 find -exec 一次性批量删除副本,省去一个个手动删的麻烦。务必精准:只匹配你确认过是重复的确切文件名——模式太宽会把想保留的文件也删掉。删除完成后,校验和清单里的那些路径应该已不存在。
find -exec 把每个搜索结果变成另一条命令的参数,可以替代脆弱的 shell 循环和 xargs 管道,比如删除目录树中所有 .DS_Store 文件。
$ find . -name "*.tmp" -exec rm {} +
find . -name "*.DS_Store" -type f -exec rm -v {} \;确认空间已经释放
清理完成后,再对用户目录做一次大文件检查,确认清理生效。结果里应该看不到那些重复副本了,而且刚清理过的文件夹相比之前的 du 排名应该明显变小。
列出主目录中占用磁盘空间最大的文件。
$ find ~ -type f -size +500M 2>/dev/null -exec ls -lh {} \;如何确认已解决
再对用户目录跑一次大文件检查:重复副本应该已消失,刚清理过的文件夹相比最初的 du 排名应该明显变小。
来源
- du — disk usage (macOS man page)依据: Documents du -s (summary per argument), -h (human sizes) and -x (stay on one filesystem).
- shasum – Calculate SHA checksums依据: Checksum tools (md5/shasum) produce identical hashes for identical content — the basis of duplicate detection.
- find – Walk a file hierarchy依据: find -type f -exec runs the checksum tool over every file in the tree in batches.
最后验证: 2026-09-21