首页 > 系统服务 > 详细

linux学习24 Linux运维必备技能-文件查找命令企业级应用

时间:2019-12-26 18:09:43      阅读:90      评论:0      收藏:0      [点我收藏+]

一、文件查找

  1、在文件系统上查找符合条件的文件

    实现工具:locate,find

  2、locate

    a、依赖于事先构建好的索引库;

      系统自动实现(周期性任务)

      手动更新数据库(updatedb),此操作非常消耗系统资源

    b、工作特性

      查找速度快

      模糊查找

      非实时查找

    c、相应参数

      -b:只匹配路径中的基名,不包含路径

      -c:统计出共有多少个符合条件的文件

      -r:BRE

  3、find

    a、实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找

    b、工作特性

      查找速度略慢

      精确查找

      实时查找

    c、用法

      find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

        查找起始路径:指定具体搜索目标起始路径,默认为当前目录

        查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等等标准进行;默认为找出指定路径下的所有文件;

        处理动作:对符合查找条件的文件作出的操作,例如删除等操作,默认为输出至标准输出

    d、查找条件

      表达式:选项和测试

      测试:

        (1)、根据文件名查找:

          -name "pattern"

[root@node1 ~]# find /etc -name "passwd"
/etc/passwd
/etc/pam.d/passwd

          -iname "pattern" :忽略名称中的大小写

[root@node1 ~]# find /etc -iname "passwd"
/etc/passwd
/etc/pam.d/passwd
/etc/test/Passwd

          支持glob风格的通配符:*,?,[],[^]

[root@node1 ~]# find /etc -iname "passwd*"
/etc/passwd
/etc/pam.d/passwd
/etc/passwd-
/etc/test/Passwd
/etc/test/passWD.txt

          -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非基名(一般很少用)

        (2)、根据文件从属关系查找:

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

[root@node1 ~]# find /tmp -user moosefs
/tmp/moosefs
/tmp/moosefs/.bash_logout
/tmp/moosefs/.bash_profile
/tmp/moosefs/.bashrc
/tmp/skel
/tmp/skel/.bash_logout
/tmp/skel/.bash_profile
/tmp/skel/.bashrc
[root@node1 ~]# find /tmp -user archlinux

            -group GRPNAME:查找属组为指定用户的所有文件

            -uid UID:查找属主为指定UID的所有文件;

            -gid GID:查找属组为指定的GID的所有文件;

            -nouser:查找没有属主的文件

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

        (3)、根据文件的类型查找

            -type TYPE:

                f:普通文件

                d:目录文件

                l:符号链接文件

                b:块设备文件

                c:字符设备文件

                p:管道文件

                s:套接字文件

            查找/dev目录下所有的块设备文件并查看

[root@node1 ~]# find /dev -type b -ls
 10599    0 brw-rw----   1 root     disk     253,   1 Dec 19 18:39 /dev/dm-1
 10548    0 brw-rw----   1 root     disk     253,   0 Dec 19 18:39 /dev/dm-0
 10451    0 brw-rw----   1 root     cdrom     11,   0 Dec 19 18:39 /dev/sr0
 10369    0 brw-rw----   1 root     disk       8,   2 Dec 19 18:39 /dev/sda2
 10368    0 brw-rw----   1 root     disk       8,   1 Dec 19 18:39 /dev/sda1
 10367    0 brw-rw----   1 root     disk       8,   0 Dec 19 18:39 /dev/sda

        (4)、组合测试

          与:-a,默认也是与

          或:-o,但凡是

[root@node1 ~]# find /tmp -nouser -o -type f -ls   #只要符合二者之一即可
35697252    4 -rw-r--r--   1 moosefs  moosefs        18 Aug  3  2017 /tmp/moosefs/.bash_logout
35697253    4 -rw-r--r--   1 moosefs  moosefs       193 Aug  3  2017 /tmp/moosefs/.bash_profile
35697254    4 -rw-r--r--   1 moosefs  moosefs       231 Aug  3  2017 /tmp/moosefs/.bashrc
35697261    4 -rw-r--r--   1 moosefs  moosefs        18 Dec 20 16:47 /tmp/skel/.bash_logout
35697262    4 -rw-r--r--   1 moosefs  moosefs       193 Dec 20 16:47 /tmp/skel/.bash_profile
35697263    4 -rw-r--r--   1 moosefs  moosefs       231 Dec 20 16:47 /tmp/skel/.bashrc
17396129    4 -rw-r--r--   1 root     root         2055 Dec 23 15:43 /tmp/test.etc
16784826   20 -rw-r--r--   1 root     root        17500 Dec 25 15:36 /tmp/function.txt
17790829    8 -rw-r--r--   1 root     root         4253 Dec 26 09:59 /tmp/grub2.cfg
18336343   20 -rw-r--r--   1 root     root        17500 Dec 26 10:03 /tmp/functions
[root@node1 ~]# find /tmp -nouser -a -type f -ls
[root@node1 ~]# 

          非:-not,!

[root@node1 ~]# find /tmp -nouser -not -type f -ls
[root@node1 ~]#

    e、练习

      (1)、找出/tmp目录下属主为非root的所有文件

[root@node1 ~]# find /tmp/ -not -user root -ls
35697251    0 drwx------   2 moosefs  moosefs        62 Dec 19 20:43 /tmp/moosefs
35697252    4 -rw-r--r--   1 moosefs  moosefs        18 Aug  3  2017 /tmp/moosefs/.bash_logout
35697253    4 -rw-r--r--   1 moosefs  moosefs       193 Aug  3  2017 /tmp/moosefs/.bash_profile
35697254    4 -rw-r--r--   1 moosefs  moosefs       231 Aug  3  2017 /tmp/moosefs/.bashrc
35697260    0 drwxr-xr-x   2 moosefs  moosefs        62 Dec 20 16:47 /tmp/skel
35697261    4 -rw-r--r--   1 moosefs  moosefs        18 Dec 20 16:47 /tmp/skel/.bash_logout
35697262    4 -rw-r--r--   1 moosefs  moosefs       193 Dec 20 16:47 /tmp/skel/.bash_profile
35697263    4 -rw-r--r--   1 moosefs  moosefs       231 Dec 20 16:47 /tmp/skel/.bashrc

      (2)、找出/tmp目录下文件名中不包含fstab字符串的文件

[root@node1 ~]# find /tmp -not -iname "*fstab*" -ls

      (3)、找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件

[root@node1 ~]# find /tmp -not -user root -a -not -iname "*fstab*" -ls
35697251    0 drwx------   2 moosefs  moosefs        62 Dec 19 20:43 /tmp/moosefs
35697252    4 -rw-r--r--   1 moosefs  moosefs        18 Aug  3  2017 /tmp/moosefs/.bash_logout
35697253    4 -rw-r--r--   1 moosefs  moosefs       193 Aug  3  2017 /tmp/moosefs/.bash_profile
35697254    4 -rw-r--r--   1 moosefs  moosefs       231 Aug  3  2017 /tmp/moosefs/.bashrc
35697260    0 drwxr-xr-x   2 moosefs  moosefs        62 Dec 20 16:47 /tmp/skel
35697261    4 -rw-r--r--   1 moosefs  moosefs        18 Dec 20 16:47 /tmp/skel/.bash_logout
35697262    4 -rw-r--r--   1 moosefs  moosefs       193 Dec 20 16:47 /tmp/skel/.bash_profile
35697263    4 -rw-r--r--   1 moosefs  moosefs       231 Dec 20 16:47 /tmp/skel/.bashrc
[root@node1 ~]# find /tmp -not \( -user root -o  -iname "*fstab*" \) -ls
35697251    0 drwx------   2 moosefs  moosefs        62 Dec 19 20:43 /tmp/moosefs
35697252    4 -rw-r--r--   1 moosefs  moosefs        18 Aug  3  2017 /tmp/moosefs/.bash_logout
35697253    4 -rw-r--r--   1 moosefs  moosefs       193 Aug  3  2017 /tmp/moosefs/.bash_profile
35697254    4 -rw-r--r--   1 moosefs  moosefs       231 Aug  3  2017 /tmp/moosefs/.bashrc
35697260    0 drwxr-xr-x   2 moosefs  moosefs        62 Dec 20 16:47 /tmp/skel
35697261    4 -rw-r--r--   1 moosefs  moosefs        18 Dec 20 16:47 /tmp/skel/.bash_logout
35697262    4 -rw-r--r--   1 moosefs  moosefs       193 Dec 20 16:47 /tmp/skel/.bash_profile
35697263    4 -rw-r--r--   1 moosefs  moosefs       231 Dec 20 16:47 /tmp/skel/.bashrc

    f、根据文件的大小查找

      -size [+|-]#UNIT

        常用单位:k,M,G

        #UNIT:(#-1,#]相当于值可以小于#一点,也可以等于#,但是要大于#-1

        -#UNIT:[0,#-1]相当于值在0到#-1之间,也可以为#-1

[root@node1 ~]# find /tmp/ -size 45k #等于45k的,这个在44k-45k之间,但是不包括44k,可以包括45k
/tmp/messages
/tmp/messages.2
[root@node1 ~]# find /tmp/ -size -45k  #小于45k的,但是不包括44k-45k之间,如果等于44k也可以匹配到
/tmp/
/tmp/.Test-unix
/tmp/.font-unix
/tmp/.ICE-unix
/tmp/.X11-unix
/tmp/.XIM-unix

        +#UNIT:(#,oo) 。相当于值需要大于#的

[root@node1 ~]# find /tmp/ -size +45k
[root@node1 ~]# find /tmp/ -size +44k
/tmp/messages
/tmp/messages.2
[root@node1 ~]# find /tmp/ -size -44k
/tmp/
/tmp/.Test-unix
/tmp/.font-unix
/tmp/.ICE-unix
/tmp/.X11-unix
/tmp/.XIM-unix
[root@node1 ~]# find /tmp/ -size 44k
[root@node1 ~]# find /tmp/ -size -45k
/tmp/
/tmp/.Test-unix
/tmp/.font-unix
/tmp/.ICE-unix
/tmp/.X11-unix
/tmp/.XIM-unix
[root@node1 ~]# find /tmp/ -size 45k
/tmp/messages
/tmp/messages.2

    g、根据时间戳查找

      以天为单位

        -atime [+|-]#

          #

        -mtime

        -ctime

      以分钟为单位

        -amin

        -mmin

        -cmin

1:07:59

linux学习24 Linux运维必备技能-文件查找命令企业级应用

原文:https://www.cnblogs.com/Presley-lpc/p/12102403.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!