一、前置准备:查找大文件 在删除大文件前,需先精准定位目标文件。常用命令如下:
find命令按大小查找
通过-size参数指定文件大小阈值(支持c/字节、k/KB、M/MB、G/GB等单位),结合-type f(仅限文件)筛选。例如查找当前目录及子目录下大于100MB的普通文件:
sudo find . -xdev -type f -size +100M
-xdev:避免跨文件系统搜索(如外接磁盘);-print:默认输出文件路径(可省略)。ls -lh和sort排序:sudo find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r
其中-k5,5表示按第5列(文件大小)排序,-h为人类可读格式,-r反转顺序(从大到小)。
du命令查找大目录/文件
通过-ahx参数显示当前目录下所有文件/目录的大小(a=所有、h=人类可读、x=跳过不同文件系统),再用sort排序找出最大的几个:
du -ahx . | sort -rh | head -5
此命令可快速定位占用空间大的目录(如/var/log、/home),便于后续针对性清理。
二、安全删除大文件的方法 找到目标文件后,选择合适的方式删除,避免误删或系统卡顿:
rm命令直接删除
最基础的删除方式,适用于少量文件。例如删除单个文件:
rm large_file.iso
删除当前目录下所有.log文件:
rm *.log
注意:rm无回收站功能,删除后文件不可恢复!建议添加-i参数确认(每删除一个文件询问):
rm -i *.log
强制删除(忽略只读权限,慎用):
rm -f large_file.iso
find+-exec/-delete批量删除
适用于大量文件(如数千个),避免rm *导致的“参数列表过长”错误。
-exec方式:对每个找到的文件执行rm命令({}代表文件名,\;结束命令):sudo find . -xdev -type f -size +100M -exec rm -f {} \;
-delete方式:find内置的删除功能,效率高于-exec(无需调用外部rm命令):sudo find . -xdev -type f -size +100M -delete
两种方式均支持结合-print输出删除的文件列表(调试用)。
rsync清空目录(最快批量删除)
通过同步空目录到目标目录,实现快速清空(尤其适合百万级小文件或大目录)。步骤如下:
mkdir /tmp/empty_dir
rsync同步(--delete-before表示删除目标目录中存在但源目录不存在的文件):sudo rsync -a --delete-before /tmp/empty_dir/ target_dir/
rm -rf /tmp/empty_dir
此方法比rm -rf快数倍(实测删除50万文件约16秒),但需确保目标目录路径正确。
清空文件内容(而非删除文件)
若只需释放文件占用的空间(而非删除文件本身,如日志文件),可使用以下命令:
truncate命令:将文件大小截断为0(保留文件属性):sudo truncate -s 0 large_file.log
cp/dd命令:用空内容覆盖文件:sudo cp /dev/null large_file.log
# 或
sudo dd if=/dev/null of=large_file.log
这些命令会立即释放文件占用的磁盘空间,适用于日志轮转或临时文件清理。
三、注意事项
sudo(提升权限),但需谨慎操作,避免误删关键文件(如/etc、/boot下的文件)。cp或tar备份文件(如tar -czvf backup.tar.gz large_file.iso),防止误删。-xdev参数防止find搜索外接磁盘或挂载点,减少不必要的操作。find命令查看目标文件列表(去掉-exec或-delete),避免误删。