文件查找:locate/find

文件查找就是在文件系统上查找符合条件的文件,工具名分别为:locate和find

locate是非实时查找或数据库查找的工具;而find则是实时查找工具。

locate

locate依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(即为周期性任务),也可以手动更新数据库(updatedb)

注意:索引构建过程需要遍历整个根文件系统,极其消耗资源。

它的工作特点有:查找速度快,模糊查找和非实时查找

语法:

    locate KEYWORD

find

find是实时查找工具,通过遍历指定路径下的文件系统完成文件查找。


它的工作特点有:查找速度略慢,精确查找和实时查找

语法:

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

        查找路径:指定具体目标路径,默认为当前目录。

        查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行,默认为找出指定路径下的所有文件。

        处理动作:对符合条件的文件做什么操作,默认输出至屏幕。

    查找条件是根据文件名查找

        -name "文件名称" (支持使用glob)

        -iname "文件名称" :不区分字符大小写

        -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

    根据属主、属组查找

        -user USERNAME:查找属主为指定用户的文件

        -group GRPNAME:查找属组为指定组的文件

        -id UserID:查找属主为指定的UID号的文件

        -gid GroupID:查找属组为指定的GID号的文件

        -nouser:查找没有属主文件

        -nogroup:查找没有属组的文件

    根据文件类型查找

        -type TYPE

        组合条件如下

            与:-a

            或:-o

            非:-not,!

        示例:找出/tmp目录下,属组不是root,且文件名不是fstab的文件。

            find /tmp -not \( -user root -o -name 'fstab' \) -ls

    根据文件大小来查找

        -size [+|-]#UNIT

        常用的单位有:k,m,g

            #UNIT:(#-1,#)

            -#UNIT:[0,#-1]

            +#UNIT:(#,无限大)

    根据时间戳

        以 天 为单位        

            -atime [+|-]#

            -mtime

            -ctime

        以分钟为单位

            -amin

            -mmin

            -cmin

    根据权限查找

            -perm [+|-]MODE

                MODE:精确权限匹配

            +MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可

            -MODE:每一类对象都必须同时拥有为其指定的权限标准

    处理动作

        -print:默认的处理动作,显示至屏幕

        -ls:类似于对查找到的文件执行 "ls -l" 命令

        -delete:删除查找到的文件

        -fls /path/to/somefile:查找到的所有文件的长格式信息

        -ok COMMAND {}\:对查找到的每个文件执行由COMMAND指定的命令

            对于每个文件执行命令之前,都会交互式要求用户确认

        -exec COMMAND {}\:对查找到的每个文件执行由COMMAND指定的命令

    注意:find传递查找到的文件至后面指定的命令时,查找到的所有符合条件的文件一次性传递给后面的命令。有些命令不能够接受过多参数,此时命令执行可能会失败。

        find | xagrs COMMAND  这种方式可规避此问题

原创文章,作者:黑白子,如若转载,请注明出处:http://www.178linux.com/12687

(0)
黑白子黑白子
上一篇 2016-03-12 23:12
下一篇 2016-03-13 01:55

相关推荐

  • 定时任务应用示例

    定时任务应用示例 1.每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202 mkdir /backup crontab -e * */4 * * * cp -ar /etc/ /backup/etc-$(date +%Y%m%d%H%M) 2.每周2,4,6备份/var/log/messages…

    Linux干货 2017-08-06
  • linux用户和组管理

    linux系统是一个多用户的系统,每个账号都干什么用,你必须了如指掌。 【Linux用户】 即UID分为两大类:管理员 UID:0                               普通用户 UID:…

    Linux干货 2016-08-05
  • VIM编辑器入门

    VIM简介 VIM是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是纯粹的自由软件。 VIM的使用 在介绍基本使用前,先了解下VIM的基本模式 基本模式可分为三种:命令模式、输入模式、末行模式 命令模式:Vim启动后的默认模式,通过输入指令完成对应的编辑操作。输入模式和末行模式从命令模式进入&nb…

    Linux干货 2016-04-05
  • 一起学DNS系列(十四)DNS查询工具之DIG的使用(2)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/240243    上节谈到了利用DIG的+trace参数追踪域名解析的过程,其实除此之外,DIG还有一些其他的参数,这节会涉及到这…

    2015-03-17
  • Linux第八周小结

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态 在线的主机使用绿色显示 不在线的主使用红色显示 #!/bin/bash # for i in {1..254};do if ping -c 6 -w 1 192.168.1.$i &> /dev/null;then echo -e…

    Linux干货 2017-08-20
  • tomcat基础-如何给Tomcat前端加反向代理服务器

    Tomcat可以做为反向代理服务器的组件有很多,例如使用nginx,如果使用nginx,Tomcat就只能使用http连接器,另外一种是apache。如果是使用httpd,Tomcat两种连接器都能发挥作用,例如可以使用http连接器,也可以使用ajp连接器,

    Linux干货 2018-03-19