@wyjgd
2019-09-01T05:16:21.000000Z
字数 1783
阅读 773
locate:在文件系统上查找符合条件的文件,非实时查找
locate有一个小型数据库,使用locate搜索时,搜索数据库中的记录的内容,适合用于搜索固定的文件
updatedb用于更新locate数据库,数据库存放在/var/lib/mlocate/mlocate.db。
特点:查找速度快、模糊查找、非实时查找、搜索的是文件的全路径,不仅仅是文件名、可能只搜索用户具备读取和执行权限的目录
用法:
locate [OPTION]... [PATTERN]...
选项:
-i:不区分大小写搜索
-n:N 只列举前N个匹配项目
-r:使用正则表达式
-c:显示搜索到文件的个数
-b:搜索基名basename
实时查找工具,通过遍历指定路径完成查找
查找速度略慢
精确查找
可能只搜索用户具备读取和执行权限的目录
find [option] [查找路径][查找条件] [处理动作]
查找路径:指定具体目标路径;默认当前目录
查找条件:指定查找标准,例如文件名、大小、类型、权限等,默认查找指定路径下的所有文件
处理动作:对条件符合的文件做操作,默认输出至屏幕
搜索层级
-maxdepth level 最大搜索目录深度,指定目录为第1级
-mindepth level 最小搜索目录深度
-depth 先处理目录内的文件,再处理目录
根据文件名和inode查找
-name:文件名称
-iname:不区分大小写
-inum:按inode号查找
-samefile name:相同inode号的文件
-links n:链接数为n的文件
根据属主、属组查找
-user:查找属主为指定用户的文件
-group:查找属组为指定组的文件
-uid:查找属主为指定UID的文件
-gid:查找属组为指定GID的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
查找/var目录下不属于root、lp、gdm的所有文件
find /var ! \( -user root -o -user lp -o -user gdm \) -ls
根据文件类型查找
type TYPE:
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件
-empty:空文件或目录
组合条件
与:-a
或:-o
非:-not,!
(!A)-o(!B)= !(A -a B)
(!A) -a (!B) = !(A -o B)
根据文件大小查找
-size [+|-]#UNIT(k,M,G,c)
#UNIT:(#-1,#] 8k表示 7k<x<=8k
-#UNIT:[0,#-1] -8k表示 x<8k
+#UNIT:(#,∞) +8k表示 x>8k
根据时间戳查找
以天为单位:
-atime [+|-]#
#:[#,#+1) 3天 3<=x<4 今天前面第三天内
+#:[#+1,∞] x>=4 4天以前
-#: [0,#) 0<=x<3 3天以内
/test/bin路径下所有文件时间
查找该路径下3天以前修改过的文件
查找该路径下3天以内修改过的文件
查找该路径下今天前面第三天内修改过的文件
根据权限查找
-perm [/|-] mode
mode:精确权限匹配
/mode:任何一类(u,g,o)对象的权限中只要能匹配其中一个即可,所以属于或关系,centos7之前用+表示。
0:表示不关注
find -perm 755:匹配权限是755的文件
find -perm +222:只要当任一类有写权限时,就匹配
find -perm -222:只有当每一类都有写权限,才匹配
find -perm -002:只有当其他人有写权限时,才匹配
-print:默认的处理动作,屏幕显示
-ls:对查找到的文件执行ls -l命令
-delete:删除查找到的文件
-fls file:查找到的所有文件长格式信息保存至指定文件
-ok command{}\;对查找到的每个文件执行command命令之前,跟用户交互确认
-exec command{}\;对查找到的每个文件执行command命令
find /data -name "*.sh" -exec cp {} /root/{}.bak \;
xargs:很多命令不支持管道|来传递参数,用于产生某个命令的参数
find | xargs command