能够方便快捷的对服务器中的文件进行操作管理是一个运维工程师必要的技能,而精确的掌握服务中的一些命令更能使我们如鱼得水。
下面我们就来说说在linux系统中对于一个服务器管理者必须掌握的一个文件查找命令find 的用法:
find:精确查找,实时查找的的命令,可以指定多个查找路径。他与另一个查找命令local的有如下的区别:
local:模糊查找 ,它是从数据库中查找文件,速度快,但是对于刚建立的文件, 该命令不能查找出,因为这些文件还没有同步到数据库中,故不能查找出, 需要手动更新完数据库后方能查找到。
find:精确查找,实时查找,可以指定多个查找路径,但速度相对来说慢一点。
我们要讨论的就是find命令:
find [查找路径...] [查找条件] [处理动作]
使用find不加任何选项参数会查找出当前系统上所有的路径,直到文件。
find的查找条件有如下:
-name "FILENAME":精确查找某文件,不区分大小写,并且支持glob的通 配;
-iname:不区分文件名的大小写;
-user USERNAME:查找指定范围内属于某个用户的文件。
-group GROUPNAME:查找指定范围内属于某个组的文件;
-uid: 查找属主属组是id号的。因为这种情况一般是当一个用户建立
-gid: 某文件后该用记又被删除,那么该文件还存在,只是属主 属组变成了一个uid和gid
-nouser:没有属主的文件
-nogroup:没有属组的文件
-regex: 使用正则表达式的通配
-iregex: 不区分大小写的正则表达式的通配。
多条件查找:
-a: 并的关系
-o: 或的关系
!,-not:非的关系
如: find /etc -not -user root : 表示查找/etc 目录下属主不是 root用户的文件。
find /etc -user root -a -group root : 表示查找/etc 目录下属主是root且属组也是root 的文件。
多条件时,如果没有明确说明那么就是‘并’的关系。
-type:申明文件类型
f:普通文件
d:目录文件
l:链接文件
b:块设备
c:字符设备
p:管道文件
s:sock文件
如:find /var -type d :查找/var下的所有目录文件
-size :可以指定文件的大小 单位{k/M/G}:不指定的话默认是k
2M: 1M-2M之间,比如1.1M,1.5M,2M;不超过一个单位
+2M:大于2M
-2M:小于2M
另外,find 在使用的过程中不能直接送给管道来显示,要用命令引用来显示
如: ll -h `find /var -size -2M`:查找显示出/var目录下小于民2M的文件
find 也可以根据时间的特性来查找一些符合条件的文件:
时间为天的:
-atime [+/-]:访问时间
-mtime [+/-]:修改时间
-ctime [+/-]:改变时间
比如说查找某目录下1天之内发生改变过的文件:
find /etc -mtime -1
按分钟单位来查找的有以下:
-amin:
-mmin
-cmin
find命令也可以根据 文件的权限来查找:
-perm
mode:作精确匹配
/mode:三组中任何一个匹配都行
-mode:表示所有都得匹配有此权限,但别的权限不做要求。
如下:
下面是对于匹配到的文件进行的处理动作:
-ok COMMAND {} \;:该命令提醒用户确认,后面跟上其他的命令来作为处理动作,一般还要用{}来作为占位符,结尾以“;”结束。
-exec COMMAND {} \;:不提醒。
如下图:
基本上灵活运用这么多技巧对于一个管理员来说也差不多够用了。