Linux系统清理重复文件的常用方法
fdupes是一款专门用于查找和删除重复文件的命令行工具,操作简单且功能全面。
sudo apt install fdupes,CentOS/RHEL用sudo yum install fdupes,Fedora用sudo dnf install fdupes)。fdupes -r /path/to/search递归搜索指定目录(-r表示递归子目录),命令会列出所有重复文件组。-d(删除重复文件)和-N(仅显示文件名,不自动删除)选项,如fdupes -rdN /path/to/search,终端会提示每组重复文件的编号,输入对应编号即可删除副本(保留第一个文件)。fdupes -r /path/to/search | sed '/./{N;N;d}' | xargs -I {} rm {}(谨慎使用,建议先测试-N选项)。通过计算文件MD5哈希值(内容唯一标识)查找重复文件,适用于所有Linux系统。
find /path/to/search -type f -exec md5sum {} + | sort | uniq -w 32 -d
解释:find查找所有文件,md5sum计算哈希值,sort排序,uniq -w 32匹配前32位(MD5长度)相同的行(即重复文件),-d显示重复项。find /path/to/search -type f -print0 | xargs -0 md5sum | sort | uniq -w 32 -d | awk '{print $3}' | xargs rm -v
解释:-print0和xargs -0处理含空格的文件名,awk提取重复文件的路径,rm -v删除并显示操作结果(保留第一个文件)。rdupes是fdupes的轻量级分支,专注于快速查找和删除重复文件。
sudo apt install rdupes,CentOS/RHEL用sudo yum install rdupes,Fedora用sudo dnf install rdupes)。rdupes -r /path/to/search查找重复文件,添加-d(删除)和-N(确认)选项,如rdupes -rdN /path/to/search,终端会提示每组重复文件的编号,输入编号即可删除副本。rmlint针对大数据量设计,支持多线程加速和多种删除策略(如硬链接、删除)。
sudo apt install rmlint(Debian/Ubuntu),或通过源码编译(git clone https://github.com/sahib/rmlint && cd rmlint && ./configure && make)。rmlint /path/to/search # 扫描(默认使用SHA1)
./rmlint.sh -d # 生成清理脚本(-d表示删除)
./rmlint.sh -do /backup # 预览(-do表示模拟运行,保留备份)
./rmlint.sh -d # 执行清理
解释:rmlint生成rmlint.sh脚本,-d选项执行删除,-L选项可用硬链接替代删除(节省空间)。Czkawka提供直观的图形界面,适合不熟悉命令行的用户。
.tar.gz),解压后运行./czkawka_gui。rsync -av /target /backup),防止误删。-N(fdupes)、-i(fdupes交互模式)或-do(rmlint)选项预览结果,确认无误后再删除。/proc、/sys、/dev),可使用--exclude选项(如fdupes -r --exclude=/proc --exclude=/sys /)。