【系统运维】使用find命令查找系统中的文件
一、find命令介绍
使用find命令可以根据指定的条件去系统中遍历查找文件,还可以对这些文件进行后续的操作,和另一个查找文件的命令locate不同的地方在于find命令是实时精确查找,不做模糊匹配,但是可以使用通配符。而locate是通过一个数据库文件来模糊查找。两者之间locate速度快,但是find最精确。
二、find命令基本格式
#语法格式: #find [查找路径] [查找条件] [查找后的动作] find /etc -name "passwd" -exec ls -l {} \;
查找路径:指定具体搜索路径,默认为当前路径
查找条件:可以根据文件名、大小、权限、日期等进行查找。没有指定条件的话默认为当前路径下所有文件
处理动作:对符合条件的文件作出的操作,如删除、复制。默认为输出到标准输出
三、find命令查找条件表达式
当指定了多个查找条件时,每个查找条件是按照逻辑与的关系进行一起查找,也就是说需要同时满足所有条件,可以在不同的查找条件之间添加-o选项进行逻辑或的查找,除此还有 -not或者!表示逻辑非
· -name:根据文件名进行查找,文件名支持通配符
find /etc -name "fstab"
· -iname:同name,但是可以忽略大小写进行查找
find /etc -iname "FSTA*"
· -prune:查找时排除某些目录
· -user | -group :根据文件属主或者属组进行查找
find /etc/ -user mysql
· -uid | -gid:根据UID或GID查找
find /etc/ -uid 500
· -nouser | -nogroup:查找没有属主或属组的文件
· -size:根据文件大小查找,可以自定义文件的单位,默认为字节。通过+、-符号可以设置比较关系,代表大于或小于所定义的数值大小,如果没有则为精确查找,查找时会自动将小数点向上取整,如9-10K范围内的文件都会显示为10K
find / -size +100M
-type:根据文件类型查找,f为普通文件、d为目录、b为块设备、l为链接文件等
find /etc -type l find /etc -type d
-mtime:根据文件修改时间进行查找, -n表示文件是在n天以内被修改过,+n表示文件是在N天以前被修改过
find / -mtime -5 #除了mtime还有ctime和atime选项,表示文件元数据被修改的时间和文件被访问时间,还有mmin可以精确到分钟级别的查找
-mindepth n:从n级目录开始进行查找,注意根目录也需要计算
-maxdepth n:最多查找到n级子目录
-perm:根据权限查找
find / -type f -perm 644
四、find命令查找后的操作选项
-print:将查找出来的结果打印出来,这个是find命令的默认操作
-exec:指定一个需要执行的命令作用在被查找出来的文件上,使用"{ } \;"符号来引用所有被查找出来的文件
find /var/logs -type f -mtime +7 -ok rm { } \;
-ok:和-exec的作用相同,只不过在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
评论
凯哥自媒体
回复分享的不错,谢谢
企业咨询
回复不是很懂这块,不过既然来了,留个爪