使用find 命令查找文件系统中的空间使用:
root:~# find / -path /proc -prune -o -path /dev -prune -o -path /sys -prune -o -path /run -prune -o -size +100M -type f -exec du -hs {} \; | sort -k1h | tail
其中 -prune 一般必须和-path 一起使用;并且-prune 后面的其他条件都需要 用逻辑 -o 进行连接;
上述命令的意思是:
在根目录下,查找size大于100M的文件,在查找过程中排除 /proc, /dev,/sys, /run 目录,查找后统计各个文件的使用大小,然后用sort 命令进行排序,最后取出使用较大的几个文件;
关于-perm参数的理解:
在查看man 帮助文档的时候,在-perm参数的说明中有“permission bits”的说法,这个说法是什么意思呢? 这个其实就是指所有的非0(可以是r,w,x中的任意一个)的权限设置,而并不是指permission的所有的bits. 理解了这个,就容易理解 -perm 的-mode 与 /mode的区别了;
关于-atime参数的理解:
atime, mtime,ctime的单位是24h, 也就是查找出的时间都是某个24小时为区间, 所以 n 就表示24*n 小时以上,但是(n+1)*24小时以内; -n 表示 n*24 小时以内的;+n 表示 n*24小时以上的
关于-xdev, -print0 , -maxdepth参数的使用:
这个参数是 global option, 通常紧跟查找的path ,所以一般写在最前面,表示只是查找当前目录所在的文件系统,而不查找属于其他文件系统的目录,当然了,该参数可以和 -path PATH -prune 配合使用;
-maxdepth 表示find 查找路径的深度
-print0 主要是当查找的文件包含 特殊符号时候的处理方式,可以和xargs -0 配合使用,非常有用;
如下表示:
查找根目录所在的文件系统,同时也要排除/home 目录,查找修改时间是5*24小时以前,但是6*24小时以内的文件, 查找深度最大为3, 最后 以print0 方式打印出来;
root:~# find / -xdev -maxdepth 3 -path /home -prune -o -mtime 5 -type f -print0