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期+第三周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  ~]# who |sort -nu root     pts/0        2016-08-…

    Linux干货 2016-08-29
  • mysql进阶至mysql备份基础及备份工具

    一、mysql备份、恢复基础 备份:存储的数据副本 还原:把副本应用到线上系统,仅能恢复至备份操作时刻的数据状态。 硬件上的冗余并不能有效恢复逻辑操作上的错误。 备份:数据备份、服务配置文件备份、系统环境备份。程序的运行依赖于一定的系统环境,仅提供数据本身并不能确保恢复数据之后系统可用,数据备份的目的在于确保系统出现不可预料的灾难事故之后能够快速恢复运行,降…

    2016-11-18
  • Linux初认识

    1、计算机的五大部件 CUP: CUP中包含了两大部件分别是运算器、控制器。其中运算器主要是进行数学运算、逻辑运算等各种运算的。除了两大部件以外CUP内部还有寄存器、缓存,它们是提升CUP性能的辅助性工具。 存储器: 内存RAM(Random Access Memory)。 输入设备Input: 输入设备用来下指令,提供数据等。输入设备有键盘,鼠标,麦克风等…

    Linux干货 2017-07-09
  • btrfs管理及应用

    一. 简介     btrfs有着强大的功能,它支持在多个及各种物理设备(包括RAID)上创建一个文件系统,并支持动态扩展或减小,支持快照功能,甚至快照的快照,支持子卷功能。 二. 如何使用btrfs文件系统?     我的准备材料:3块20G的硬盘 [root@localhost ~]#…

    Linux干货 2015-12-07
  • nginx状态监控

    通过查看Nginx的并发连接,我们可以更清除的知道网站的负载情况。Nginx并发查看有两种方法(之所以这么说,是因为笔者只知道两种),一种是通过web界面,一种是通过命令,web查看要比命令查看显示的结果精确一些。下面介绍这两种查看方法 No1、通过浏览器查看 通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 &n…

    Linux干货 2016-10-19
  • http请求过程

    1、浏览器根据访问的域名找到其IP地址。DNS查找过程如下: 1.浏览器缓存:浏览器会缓存DNS记录一段时间。 2.系统缓存:如果在浏览器缓存里没有找到需要的域名,浏览器会查系统缓存中的记录。 3.路由器缓存:如果系统缓存也没找到需要的域名,则会向路由器发送查询请求。 4.ISP DNS缓存:如果依然没找到需要的域名,则最后要查的就是ISP缓存DNS的服务器…

    Linux干货 2017-10-23