【系统运维】使用find命令查找系统中的文件

TangLu 未命名 2022-04-30 5415 2

一、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的作用相同,只不过在执行每一个命令之前,都会给出提示,让用户来确定是否执行。


评论

精彩评论
2016-12-21 10:45:22

分享的不错,谢谢

2016-12-13 15:16:42

不是很懂这块,不过既然来了,留个爪