00 还是上次那个问题,运维同学发现一台CentOS 7的服务器空间快满了,服务器告警。 于是要清除掉服务器上没用的文件,但是怎么找到服务器上的无用文件,然后选择性删除呢? 这里我们提供两个思路,一个是大文件,删除一个就能腾挪很多空间,例如安装包什么的;一个是很多天以前的文件,如日志文件,可能再留存也没什么意义了。 01 首先,我们来找大文件。 关键字 find 、-size。 find / -type f -size +500M -> 从根目录开始查找,500M以上文件。 -> -type f: f为普通文件类型,f改为d则是目录文件,l则是符号链接文件,-type 还有其他参数,不在这里一一列举。 -> -size +500M :500MB以上 。 -> 一般磁盘空间不够,删除垃圾文件时会使用到此命令。 如果这500M以上的文件都是无用的,怎么删除呢?使用xargs。 find / -type f -size +500M | xargs rm -rf -> xargs : 命令传递参数过滤器,与管道符“|”一同使用,将前面的命令传递给后面的命令使用 如果这些文件中有一些不想删除怎么办?加上grep -v,来反排除。我们看示例。 find / -type f -size +500M | grep -v '我不能删*' | xargs rm -rf -> 查找500M以上文件删除,但是排除掉“我不能删”开头的文件 02 其次,第二种思路,我们查找N天以前的文件进行删除。 关键字 find 、-mtime。 find /var/log/ -mtime +30 -name '*.log' > 查找/var/log/目录下,30天前操作过的log文件 -> -mtime:代表修改时间,最常用,类似参数有-atime、-ctime -> -atime:代表访问时间,查看过就算 -> -ctime:文件状态改变时间 -> -30:代表30天以内,30为n,数字自己填写 -> +30:30天以前 -> 30:距今第30天 find /var/log/ -mtime +30 -name '*.log'| xargs rm -f -> 删除30天前的log文件 xargs : 命令传递参数过滤器,与管道符“|”一同使用,将前面的命令传递给后面的命令使用 03 总结下本次我们学习的知识点: 1、find的两种很常用的命令参数,-size +N 大小查找,-mtime +N 时间查找。 2、grep -v 反向排除。 3、还学了使用xargs + rm 命令来进行批量删除。 你还知道哪些批量删除的方法呢?下期我们再说说各种批量删除文件的方法吧。