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

相关推荐

  • 通过虚拟机制作RAID5

    制作RAID5的过程,包括制作RAID5的制作,增加和删除RAID

    2017-12-10
  • linux的管道命令和用户管理命令

    1、列出当前系统上的所有已经登录的用户的用户名 [root@localhost home]# who | cut -d” ” -f1 | uniq root test root 2、取出最后登录到当前系统的用户相关信息 [root@localhost home]# who | tail -1 root pts/3 2017-07-16 19:38 (192.…

    Linux干货 2017-07-17
  • Linux进程查看与管理命令总结

    Linux进程查看与管理命令总结 内核的功能: 进程管理 文件系统 网络功能 内存管理 驱动程序 安全功能 Process:运行中程序的一个副本。(存在生命周期) Linux内核存储进程信息的固定格式:task struct 多个任务的task struct组件的链表:task list 进程创建: init 父子关系 进程:都有其父进程创建 fork(),…

    Linux干货 2016-09-07
  • 磁盘分区,文件系统的创建、修改和检测

        写博客,对我来说不仅是学习的过程,也是一个心理历练的过程,多说无益,开始吧!!!     博客是马哥视频里的博客作业:文件系统的创建、修改和检测。我就从磁盘管理开始把      环境:     创建的centos6.5虚拟机 &nb…

    Linux干货 2016-06-26
  • 第五周练习

    1、显示当前系统上root、fedora或user1用户的默认shell 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一小组括号的行,刑如:hello() 3、使用echo命令输出一个绝对路径,使用grep取出基名 4、找出ifconfig命令结果中的1-255之间的数字 5、查找/var目录下属主为root,且属组为mai…

    2017-10-29
  • DNS服务器搭建

    1. 配置正向解析 1.安装bind yum install bind bind-utils -y 2.配置/etc/named.conf,需要修改的地方 listen-on port 53 { 127.0.0.1; 192.168.42.135; }; allow-query { any; }; dnssec-enable no; dnssec-valid…

    Linux干货 2017-05-24