在工作中我们总是会去查找一些我们需要的内容,然而往往这些东西总是会被大量的数据隐藏。这个时候我们就需要一些查找工具来帮我们处理这些数据帮我们快速的找到我们需要的数据,在我们运维人员的工作过程中我们更须要他来帮我们快速的解决问题。那么今天我要介绍的就是locate和find两种查找工具。
首先要说的是locate,locate是一种非实时的查找,它依赖于事先建立的数据库,而且索引的构建是在系统较为空闲时自动进行,还需要管理员手动进行数据库的更新。另外索引的构建过程还需要遍历真个根文件系统,因此也是及其消耗资源的。locate是一种模糊查找它的的查找速度是很快的,因为它的索引库事先已经建立过。使用方法是:locate KEYWORD
接下来就来介绍一下find查找工具,find查找工具是一种实时的查找工具,它是通过遍历指定路径下的文件系统来完成文件的查找。find的查找速度相对于locate来时较慢,但是find是精确的实时的查找。接下来给大家介绍一下find查找的语法:
find [OPTION]...[查找路径][处理动作]
查找路径:指定具体目标路径,默认为当前路径。
查找条件:指定的查找标准,可以文件名,大小,类型,权限等标准进行,默认为找出指定路径下的
所有文件。
处理动作:就是对符合条件的文件做什么操作默认为输出至屏幕。
查找条件:
搜索层级:
-maxdepth level 最大搜索目录深度,指定的目录为第一级。
-mindepth level 最小搜索目录深度。
根据文件名查找:
-name "文件名称" :支持使用glob
*, ?, [], [^]
-iname "文件名称":不区分字母大小写。
-regex "PATTERN" : 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称。
根据属组属主查找:
-user USEERNAME :查找属主为指定用户的文件。
-group groupname :查找属组为指定用户的文件。
-UID userID :查找属主为指定的UID好的文件。
-gid group ID : 查找属组为指定的GID号的文件。
-Nouser :查找没有属主的文件。
-nogroup :查找没有属组的文件
根据文件类型查找:
-type TYPE:
f:普通文件
d :目录文件
l :符号链接文件
s :套接字文件
b :块设备文件
c :字符设备文件
p :管道文件
混合条件:
与 :-a
或 :-o
非 :-not ,!
!A -a !B =!(A -o B)
!A -o !B = !(A -a B)
例如:找出/tmp 目录下,属主不是root,且文件名不是fstab 的文件
find /tmp -not \(-user root -o -name fstab\) -ls
根据文件大小查找:
-size [+|-]#unit
常用单位:G , M , K , c(byte)
#UNIT :(#-1,#] 表示大于#-1,小于等于#。
-#UNIT :[0,#-1] 表示大于0,小于等于#-1.
+#UNIT :[# oo ] 表示大于#。
根据时间戳:
以天为单位:
-atime(表示访问时间,读取时更新) [+|-]#
#: [# ,#-1)
+# :[#+1 , oo]
-# :[0 ,#)
-mtine(表示数据修改时间)
-ctime(原数据修改时间)
以分钟为单位:
-amin
-mmin
-cmin
根据权限查找:
-perm [ / | -]MODE
MODE:精确权限匹配
/MOD :任何一类(u ,g ,o)对象的权限只要能一位匹配即可,“/”是或关系,+从centos7开始淘汰,centos6及其之前的系统 / + 均可使用。
-MODE:每一类对象都必须同时拥有有指定的权限与关系。
处理动作:
-print :磨人的处理动作,显示至屏幕。
-ls :类似于对查找到的文件执行“ls -l” 命令
-delete :删除查找到的文件。
例如:find -size +6k -delete
-fls file :查找到的所有文件的长格式信息保存至指定文件中。
-ok -exce ok交互式 , exce 直接运行
例如:find -name "*.tmp" -ok -f {} \;
由于很多命令不支持管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令。
xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且可以空格符或回车符将stdin的数据分隔成为arguments
注意:文件名或只是其他意义的名词内含有空格的情况,而且有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决。
示例:
ls |xargs rm
find /sbin -perm +700 |ls -l 这是个错误的命令
改为:find /sbin -prem +700 |xargs ls -l