应用场景说明
Linux大文件查找分两种情况,一种是查找大文件,另外一种是零散的小文件很多,但是组合到一起占用的目录空间就比较大,下面分别给出排查命令
大文件查找
查找/home目录下最大的10个文件,把下面的命令放到sh脚本(脚本位置无所谓),然后执行
注意配置脚本变量,N代表要查找多少个大文件,DIR代表要查找的目录(自动包含子目录)
#!/bin/bash
#查找DIR目录及其子目录最大的N个文件
#查找几个文件
N=10
#要查找的目录(.为当前目录 /为根目录)
DIR=/home
find $DIR -type f -not -path "*/proc/*" -printf "%s\t%p\n" 2>/dev/null | sort -nr | head -n $N | while read -r size file; do
if ((size < 1024)); then
echo -e "$(echo "scale=1; $size" | bc)\tB\t$file"
elif ((size < 1048576)); then
echo -e "$(echo "scale=1; $size/1024" | bc)\tKB\t$file"
elif ((size < 1073741824)); then
echo -e "$(echo "scale=1; $size/1048576" | bc)\tMB\t$file"
else
echo -e "$(echo "scale=1; $size/1073741824" | bc)\tGB\t$file"
fi
done
大目录查找
查找/home下最大的10个目录
du -sh /home/* 2>/dev/null | sort -hr | head -n 10