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

相关推荐

  • 第五周小练习

    1显示当前系统上root,fedora或user1用户的默认shell egrep "^(root|user1|fedora)" /etc/passwd|cut -d ':' -f 1,7 2找出/etc/rc.d/init.d/functions文件中某个单…

    Linux干货 2016-12-12
  • 重定向和管道

    重定向和管道 今天一起来学习一下重定向的一些相关命令及用法: 我们都知道程序=指令+数据 ,那么我们的数据的输入(Input)和输出(Output)是如何实现的呢?!跟小编君一起来看一下吧: 本博文小编君分成了四部分:1.重定向的讲解 2.管道符的讲解 3.涉及到的一些其他命令 4.练习题 一:重定向 重定向的本质是改变文件的默认位置,即换个地方存储数据。 …

    2017-08-04
  • Linux系统启动流程

        下面按照系统的启动顺序来进行逐一的讲解。 一、POST     当我们按下开机的电源后,主板上的芯片组会首先向CPU发出一个reset指令,之后待芯片组检测到电源供电稳定后便撤去reset指令,CPU就会跳转到BIOS中的启动代码位置; BIOS首先要检测关键设备(如内显…

    Linux干货 2015-05-23
  • 第十八周博客作业

    1、为LNMP架构添加memcached支持,并完成对缓存效果的测试报告; 操作系统: CentOS 7.210.0.0.51 nginx+php+mysql10.0.0.52 memcached 一. 环境准备: 搭建LNMP编译安装环境 1. 配置163的yum源和阿里云的epel源 [root@localhost ~]# mv /etc/yum.rep…

    2017-07-12
  • 文件管理的相关命令使用及标准I/O,管道,diff及文件工具的使用

    mkdir 创建目录-p: 存在于不报错可自动创建所需的各目录 (递归创建)mkdir -p a/d/c/b-m: mode 创建时指定权限  # mkdir -m 777 filename       rmdir删除空目录 -p 递归删除空目录 touch 当文件不存在时,则创建一个空文…

    2017-07-29
  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp [root@localhost tmp]# vim rc.sysin…

    Linux干货 2016-08-02