find、locate、Gnome文件查找工具

查找命令:

        locate:非实时查找
        find:实时查找
        Gnome:图形化搜索工具

locate:

描述:
查询系统上预建的文件索引数据库/var/lib/mlocate/mlocate.db,一天更新一次
更新数据库:
updatedb
特点:
依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动也可更新数据库。索引构建过程需要遍历整个根文件系统,极消耗资源
查找速度快
模糊查找
非实时查找
搜索的是文件的全路径,不仅仅是文件名
可能只搜索用户具备读取和执行权限的目录
格式:
locate KEYWORD
选项:
-i:忽略大小写
-n #:只列举前#个匹配项目
-r:使用正则表达式
实例:
例:搜索名称或路径中带有”conf”的文件
# locate conf
例:使用Regex来搜索以”.conf”结尾的文件
# locate -r ‘\.conf$’

find:

解释:
实时查找工具,通过遍历指定路径完成文件查找
工作特点:
查找速度略慢
精确查找
实时查找
可能只搜索用户具备读取和执行权限的目录

格式:
find [OPTION]… [查找路径] [查找条件] [处理动作]

查找路径:
指定具体目标路径;默认为当前目录,并且递归搜索
查找条件:
描述:
指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件

指定搜索层级:
-maxdepth level:最大搜索目录深度,指定目录为第一级
-mindepth level:最小搜索目录深度

例:最大第三层,最小两层(2-3层)
# find /etc -maxdepth 3 -mindepth 2 -name “network”
例:只在第二层寻找:
# find /etc -maxdepth 2 -mindepth 2 -name “network”

根据文件名和inode查找:
-name “文件名称”:支持使用glob
通配符:*,?,[],[^]
例:# find -name “*.txt”
-iname “文件名称”:不区分字母大小写
-inum n:按inode号查找
例:# find / -inum 2 -ls
-samefile name:相同inode号的文件
-links n:链接数为n的文件s
-regex “PATTERN”:以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
例:# find /root -regex “.*\.txt”
# find /root -regex “.*\.\(txt\|sh\)$”

根据属主、属组查找:
-user USERNAME:查找属主为指定用户的文件
例:寻找home下不是wang的并且不是.sh结尾的文件
# find /home ! \( -user wang -o -name “*.sh” \)
-group GRPNAME:查找属组为指定组的文件
-uid UserID:查找属主为指定的UID的文件
-gid GroupID:查找属组为指定的GID的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件

根据文件类型查找:
-type TYPE:
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件
组合条件:
与:-a
或:-o
非:-not,!
德·摩根定律:
(非A)或(非B)= 非(A且B)
(非A)且(非B)= 非(A或B)
实例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

根据文件大小查找:
-size [+|-]#UNIT
常用单位:k,M,G,c(byte)
#UNIT:(#-1,#]
如:6k表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k表示[0,5k]
+#UNIT:(#,∞)
如:+6k表示(6k,∞)

根据时间戳:
以”天”为单位:
-atime [+|-]#,
#:[#,#+1)
+#:[#+1,∞]
-#:[0,#)
-mtime
-ctime
以”分钟”为单位:
-amin
-mmin
-cmin

根据权限查找:
-perm [/|-]MODE
MODE:精确权限匹配
/MODE:
任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+从centos7开始淘汰
-MODE:每一类对象都必须同时拥有指定权限,与关系0表示不关注
tip:
find -perm 755会匹配权限模式恰好是755的文件
任合一人有写权限时,find -perm +222就会匹配
只有当每个人都有写权限时,find -perm -222才会匹配
其他人other有写权限时,find -perm -002才会匹配

根据文件大小来查找:
-size [+|-]#UNIT
常用单位:k,M,G,c(byte)
#UNIT:(#-1,#]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k表示[0,5k]
+#UNIT:(#,∞)
如:+6k表示(6k,∞)

根据时间戳:
以”天”为单位:
-atime [+|-]#
#:[#,#+1)
+#:[#+1,∞]
-#:[0,#)
-mtime
-ctime
以”分钟”为单位:
-amin
-mmim
-cmin

根据权限查找:
-perm [/|-]MODE
MODE:精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能以为匹配即可,或关系,+从centos 7开始淘汰
-MODE:每一类对象都必须同时拥有指定权限,与关系0表示不关注
find -perm 755
会匹配权限模式恰哈是755的文件
只要当任意人都有写权限时,find -perm +222就会匹配
只有当每个人都有写权限时,find -perm -222才会匹配
只有当其他人other都有写权限时,find -perm -002才会匹配

处理动作:
描述:
对符合条件的文件做操作,默认输出至屏幕
选项:
-print:默认的处理动作,显示至屏幕
-ls:类似”ls -l”
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \;:对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \;:对查找到的每个文件执行由COMMAND指定的命令
{}:用于引用查找到的文件名称自身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

参数替换xargs:
描述:
由于很多命令不支持管道”|”传递参数,而日常工作中有这个必要,所以就有了xargs命令
xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分割成为arguments
格式:
find | xargs COMMAND
tip:注意,文件名或其它意义的名词内含有空格符的情况
有些命令不能接受过多的参数,命令执行可能会失败,xargs可以解决

示例:
ls f* | xargs rm
find /sbin -perm +700 | ls -l //这个命令是错误的
find /sbin -perm +7000 | xargs ls -l
例:备份配置文件,添加.orig这个扩展名
# find -name “*.conf” -exec cp {} {}.orig \;
例:提示删除存在时间超过3天以上的joe的临时文件
# find /tmp -ctime +3 -user joe -ok rm {} \;
例:在主目录中寻找可被其它用户写入的文件
# find ~ -perm -002 -exec chmod o-2 {} \;
例:# find /data -type f -perm 644 -name “*.sh” -exec chmod 755 {} \;
例:# find /home -type d -ls

实例:
例:# find -name snow.png
例:# find -iname snow.png
例:# find / -name “*.txt”
例:# find /var -name “*log”
例:# find -user joe -group joe
例:# find -user joe -not -group joe
例:# find -user joe -o -user jane
例:# find -not \( -user joe -o -user jane \)
例:# find / -user joe -o -uid 500

示例:
例:找出/tmp目录下,属主不是root,且文件名不以f开头的文件
# find /tmp \( -not -user root -a -not -name ‘f*’ \) -ls
# find /tmp -not \( -user root -o -name ‘f*’ \) -ls
例:查找/etc下,除/etc/sane.d目录的其它所有.conf后缀的文件
# find /etc -path ‘/etc/sane.d’ -a -prune-o -name “*.conf”
解释:
-prune:排除
例:查找根下除了/app下所有的.sh结尾的文件
# find / -path ‘/app’ -a -prune -o -name “*.sh”

例:查找/etc下,除/etc/sane.d和/etc/fonts两个目录的其它所有.conf后缀的文件
# find /etc \( -path ‘/etc/sane.d’ -o -path ‘/etc/fonts’ \) -a -prune -o -name “*.conf”

例:查找根下除了/app和/usr以外的所有.sh后缀的文件
# find / \( -path ‘/app’ -o -path ‘/usr’ \) -a -prune -o -name “*.sh”

tip:注意查找排除的时候目录后面不要加”/”,否则查找失败

Gnome:
描述:
图形化搜索工具,可搜索命令、内容、用户/组、大小、修改时间

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88974

(2)
Pkin°Pkin°
上一篇 2017-11-26 21:26
下一篇 2017-11-26 22:32

相关推荐

  • 马哥教育网络班20期+第2周课程练习

    1、Linux上的文件管理命令有哪些?其常用的使用方法及相关示例演示。 答: cp 复制、 mv 移动、rm 删除 (1)cp :复制文件或目录         用法:    cp [OPTION]… [-T] SOURCE DEST    cp [OPTI…

    Linux干货 2016-06-16
  • GIAC 2017全球互联网架构大会12月22日即将登陆上海!

    12月22~23日,高可用架构和msup联合主办的GIAC 全球互联网架构大会将于上海举行。GIAC 2017全球互联网架构大会优惠报名平台活动家

    2017-12-04
  • 开篇

    正式开始学习的第一天,了解LINUX,爱上LINUX。希望在往后的日子里越战越勇!!

    Linux干货 2017-07-11
  • MHA–master在线修复

    本次实验基于【MHA+keepalive 高可用MYSQL集群】(续) 一、恢复背景 二、修复故障节点及MHA集群 三、提升已修复的节点为master 四、注意事项 一、恢复背景 1、设备清单 2、:percona-xtrabackup-2.3.2 (注:生产环境应定时备份;不应等到数据库DOWN后才备份,以免加剧集群的压力) 备份数据库操作: [root@…

    2017-03-01
  • find命令用法及示例

    文件查找 locate,find可是实现在文件系统上查找符合条件的文件 实现工具:locate,find locate有几下几个特性 1、依赖于事先构建好的索引库; 2、系统自动实现;(周期性任务) 3、手动更新数据库(updatedb) /var/lib/mlocate/mlocate.db 工作特性: 查找速度快; 模糊查找; 非实时查找 lo…

    Linux干货 2016-08-18
  • 基本脚本编译

                                  …

    2017-08-05