Linux——查找大文件并删除
rehoni / 2024-06-14
先用 du 和 df 命令定位大文件,逐级往下层目录找
# 先确定是哪个文件夹占用较多
# 如果文件较多命令执行可能很慢,在知道大概位置的情况下不建议直接对根目录操作
# du的--max-depth=1表示只展示第一个层级的目录和文件
# sort的-h选项和du的-h选项一个意思,-r表示倒叙,默认升序
du -h / --max-depth=1 | sort -hr | head -n 10
#output>>>>>>>>>>>>>>>>>>>>>>>>>>
50G /
28G /var
6.0G /dfs
4.0G /opt
3.0G /root
2.3G /usr
148M /lib
39M /log
30M /etc
29M /boot
# 定位到/var目录占用超过50%(磁盘总量50G)
# 继续往下层目录找
du -h /var --max-depth=1 | sort -hr | head -n 10
# 继续往下层目录找
du -h /var/lib --max-depth=1 | sort -hr | head -n 10
按文件大小删除
# seek表示跳过文件中指定大小的部分,实际上并没有写入任何数据
# 生成1000G的文件
dd if=/dev/zero of=test-big1 bs=1G count=0 seek=1000
# 生成1000M的文件
dd if=/dev/zero of=test-big2 bs=1M count=0 seek=1000
#查找 -size参数值中+表示> -表示< 不写表示等于
find /tmp/test -type f -size +200M
#output>>>>>>>>>>>>>>>
/tmp/test/test-big2
/tmp/test/test-big1
#output>>>>>>>>>>>>>>>
find /tmp/test -type f -size +2000M
#output>>>>>>>>>>>>>>>
/tmp/test/test-big1
#output>>>>>>>>>>>>>>>
find /tmp/test -type f -size -2000M
#output>>>>>>>>>>>>>>>
/tmp/test/test-big2
#output>>>>>>>>>>>>>>>
# 删除
# {} \;不能丢
find /tmp/test -type f -size +2000M -exec rm -rf {} \;
按时间和名称删除
# 删除修改时间距今超过10天的以.gz结尾的文件
# -mtime参数值中 0表示修改时间在24小时内 +x表示修改时间距今超过x天 -x表示距今少于x天 不写正负号表示等于
find tmp/test/* -mtime +10 -name "*.gz" -exec rm -rf {} \;