find是一个非常有效的工具,他可以遍历指定目录甚至整个系统来查找某些文件或目录

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

一、查找路径

  (1) ./    指的是当前目录下开始查找

  (2)/      系统目录下开始查找

  (3)/home/username/   指定目下开始查找(绝对路径)

二、查找条件

1、根据名称查找

  (1)-name :区分名称字母大小写

[root@nn nn]# find / -name mn
/usr/share/locale/mn
/usr/share/X11/xkb/symbols/mn

  

  (2)-iname :不区分名称字母大小写

[root@nn ~]# find / -iname mn
/root/MN
/usr/share/locale/mn
/usr/share/X11/xkb/symbols/mn

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

  (1)-user :查找指定属主的文件

[root@nn ~]# find / -user gdm
/var/lib/gdm/.pulse
/var/lib/gdm/.pulse/default.pa
-rw-------. 1 gdm gdm 354 4月  11 2018 default.pa
[root@nn ~]# ll /var/lib/gdm/.pulse/default.pa
-rw-------. 1 gdm gdm 354 4月  11 2018 /var/lib/gdm/.pulse/default.pa

  

  (2)-group :查找指定属组的文件

[root@nn MN]# find /root/MN/ -group root 
/root/MN/
/root/MN/1
/root/MN/2
/root/MN/3
[root@nn MN]# ll
总用量 0
-rw-r--r--. 1 root root 0 8月  14 19:39 1
-rw-r--r--. 1 root root 0 8月  14 19:39 2
-rw-r--r--. 1 root root 0 8月  14 19:39 3

  

  (3)-uid : 查找属主为指定的UID的文件

[root@master ~]# useradd -u 500 user11            #创建新用户uid为500
[root@master ~]# find / -uid 500                  #查找uid为500的文件
/var/spool/mail/user11
/home/user11
/home/user11/.bash_logout
/home/user11/.bash_profile
/home/user11/.bashrc

 

  (4)-gid :查找属组为指定的GID的文件

[root@master ~]# cat /etc/group                  #查看属组信息
docker:x:994:
user11:x:1000:
[root@master ~]# find / -gid 994 -ls              #查找gid为944的文件
263628    0 srw-rw----   1 root     docker          0 8月 20 14:12 /run/docker.sock

 

  (5)nouser :查找无属主文件

[root@nn ~]# find / -nouser | head -3/var/lib/docker/overlay2/de8233d5480dd675767f5b938329557152600440855f58fade5577c4e2e2b4a9/diff/usr/local/apache2
/var/lib/docker/overlay2/05f462df51b86abd8ca78aab436dc6693f498b25e1cdd848ac96f66a49cc5b55/diff/var/cache/apt/archives/partial
/var/lib/docker/overlay2/cf2c1c9b669135b78ed5aec64b9fb5a8f01002ed940a134a6e5b2deeefd1ac47/diff/usr/local/apache2

 

  (6)nogroup :查找无数组文件

[root@nn ~]# find / -nogroup | tail -3
/var/lib/docker/overlay2/cd1cf0c250448680c6f18458d422f7c7a81e1dc9a0687d457d2c6c8f7658c56b/diff/var/log/lastlog
/var/lib/docker/overlay2/cd1cf0c250448680c6f18458d422f7c7a81e1dc9a0687d457d2c6c8f7658c56b/diff/var/log/wtmp
/var/lib/docker/overlay2/977f3e26c1d475d32c5b28a27078954570e9880dc217ed803aa0ea0c4447b29b/diff/usr/bin/ssh-agent

 

3、根据权限查找  

  (1)-perm  mode :精确匹配(匹配的权限值必须完全相等)

[root@nn nn]# find /nn -perm 755 -ls
976546    4 drwxr-xr-x   8 root     root         4096 7月  7  2017 /nn
48641923    0 drwxr-xr-x   2 root     root           58 7月  7  2017 /nn/css
78622835    4 drwxr-xr-x   2 root     root         4096 7月  7  2017 /nn/img
103528340    4 drwxr-xr-x   2 root     root         4096 7月  7  2017 /nn/index
976452    0 drwxr-xr-x   2 root     root           94 7月  7  2017 /nn/js
48641927    0 drwxr-xr-x   2 root     root          112 7月  7  2017 /nn/php
78622854    0 drwxr-xr-x   2 root     root          154 7月  7  2017 /nn/.idea

  

  (2)-perm  -mode :模糊查询(每一类用户(属主,属组,其他)的权限中的每一位(r,w,x)同时符合条件既满足,9位权限之间存在 “且” 关系);

[root@nn MN]# find / -perm -755 -ls | head
524352    0 drwxr-xr-x   4 root     root           32 7月 24 11:06 /boot/efi/EFI
    79    0 drwxr-xr-x   2 root     root           62 7月 24 11:06 /boot/efi/EFI/BOOT
524353   12 drwxr-xr-x   2 root     root         8192 7月 24 17:42 /boot/grub2/i386-pc
1069121    4 drwxr-xr-x   2 root     root         4096 7月 24 17:42 /boot/grub2/locale
1572930    0 drwxr-xr-x   2 root     root           25 7月 24 17:42 /boot/grub2/fonts
    68    0 drwxr-xr-x   2 root     root           27 7月 24 17:38 /boot/grub
    74 6488 -rwxr-xr-x   1 root     root      6639904 11月  9  2018 /boot/vmlinuz-3.10.0-957.el7.x86_64
    77 6488 -rwxr-xr-x   1 root     root      6639904 7月 24 17:41 /boot/vmlinuz-0-rescue-187c4b8ed94d49429dd12ab3ea220b47
     3    0 drwxr-xr-x  20 root     root         3340 8月 12 23:36 /dev
 37126    0 lrwxrwxrwx   1 root     root            3 8月 12 14:11 /dev/cdrom -> sr0

  

  (3)-perm  /mode :模糊查询(任何一类用户(属主,属组,其他)的权限中的任何一位(r,w,x)符合条件即满足,9位权限之间存在 “或” 关系);

[root@nn MN]# find /root/MN /perm 600 -ls
103529246    0 drwxr-xr-x   2 root     root           33 8月 14 19:39 /root/MN
103533344    0 -rw-r--r--   1 root     root            0 8月 14 19:39 /root/MN/1
103533345    0 -rw-r--r--   1 root     root            0 8月 14 19:39 /root/MN/2
103533346    0 -rw-r--r--   1 root     root            0 8月 14 19:39 /root/MN/3

4、根据文件类型查询

  -type : 根据不同的文件类型筛选

         

Centos上find文件夹_CSV

[root@nn MN]# find / -type f  -ls | head -3 
1069156    4 -rwx------   1 root     root          134 11月 10  2018 /boot/efi/EFI/centos/BOOT.CSV
1069157    4 -rwx------   1 root     root          134 11月 10  2018 /boot/efi/EFI/centos/BOOTX64.CSV
1069158 1128 -rwx------   1 root     root      1151864 11月 10  2018 /boot/efi/EFI/centos/MokManager.efi
[root@nn MN]# find / -type d  -ls | head -3 
    64    0 dr-xr-xr-x  18 root     root          234 8月 14 15:39 /
    64    4 dr-xr-xr-x   5 root     root         4096 8月 12 14:12 /boot
    67    0 drwx------   3 root     root           17 11月  9  2018 /boot/efi

5、根据文件大小查询

  常用单位: k,M, G

     (1)-size  +#unit  : (#,∞ )大于#的文件

[root@nn MN]# ll -h
-rw-r--r--. 1 root root 4.1K 8月  15 00:55 1
-rw-r--r--. 1 root root 3.4K 8月  15 00:55 2
-rw-r--r--. 1 root root    2 8月  15 00:33 3
[root@nn MN]# find /root/MN/ -size +4k             #大于4k
/root/MN/1

  

  (2)-size  -#unit   : [0,#-1] 大于等于0,小于等于#-1

[root@nn MN]# ll -h
-rw-r--r--. 1 root root 4.1K 8月  15 00:55 1
-rw-r--r--. 1 root root 3.4K 8月  15 00:55 2
-rw-r--r--. 1 root root    2 8月  15 00:33 3
[root@nn MN]# find /root/MN/ -size -4k             #大于等于0k小于3k
/root/MN/
/root/MN/3
[root@nn MN]# find /root/MN/ -size -3k             #大于0k小于等于2k
/root/MN/
/root/MN/3
[root@nn MN]# find /root/MN/ -size -5k             #大于0k夏鸥等于4k
/root/MN/
/root/MN/2
/root/MN/3

   

  (3)-size  #unit    :(#-1,#] 大于#-1,小于等于# 

[root@nn MN]# ll -h
-rw-r--r--. 1 root root 4.1K 8月  15 00:55 1
-rw-r--r--. 1 root root 3.4K 8月  15 00:55 2
-rw-r--r--. 1 root root    2 8月  15 00:33 3
[root@nn MN]# find /root/MN/ -size 3k              #大于2k小于3k
[root@nn MN]# find /root/MN/ -size 4k              #大于3K小于4k
/root/MN/2
[root@nn MN]# find /root/MN/ -size 5k              #大于4k小于5k
/root/MN/1

6、根据时间查找

  n为n*24小时 ,即以天为单位。通过以下命令  可查看文件的这三个时间戳

stat filename

  

Centos上find文件夹_CSV_02

 

  (1)-atime :access time  :文件的最后访问时间 cat 

[root@nn ~]# find / -atime +2 | head -1                        #查找最近一次访问时间在两天以前的文件
/boot/efi/EFI/centos/BOOT.CSV
[root@nn ~]# stat /boot/efi/EFI/centos/BOOT.CSV                #查看文件时间戳
  文件:"/boot/efi/EFI/centos/BOOT.CSV"
  大小:134             块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1069156     硬链接:1
权限:(0700/-rwx------)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:boot_t:s0
最近访问:2018-11-10 01:53:06.000000000 +0800                   #所找到的文件符合条件   
最近更改:2018-11-10 01:53:06.000000000 +0800
最近改动:2019-07-24 11:06:31.939673005 +0800
创建时间:-

 

  (2)-ctime:change time :文件最后改动时间,这里改动是指文件内容发生修改或者文件权限,路径发生改变。 echo  chmod  chown  chgrp

[root@nn ~]# find / -ctime -1 | head -3                     #查找一天内被改动的文件
/
/dev/char
/dev/char/189:137
[root@nn ~]# stat /dev/char                                 #查看时间
  文件:"/dev/char"
  大小:3080            块:0          IO 块:4096   目录
设备:5h/5d     Inode:9718        硬链接:2
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:device_t:s0
最近访问:2019-08-15 23:57:17.386863729 +0800
最近更改:2019-08-15 23:20:23.209021653 +0800
最近改动:2019-08-15 23:20:23.209021653 +0800                 #符合查找条件的文件
创建时间:-

 

  (3)-mtime:modify time :文件最后更改时间,指的是文件内容发生修改的最后时间。  echo 

[root@nn ~]# find / -mtime 1 | head -3                            #查找从现在起往前算一天更改过的文件
/proc/sys/fs/binfmt_misc
/proc/sys/fs/binfmt_misc/register
/proc/sys/fs/binfmt_misc/status
[root@nn ~]# stat /proc/sys/fs/binfmt_misc                        #查看时间
  文件:"/proc/sys/fs/binfmt_misc"
  大小:0               块:0          IO 块:4096   目录
设备:4ch/76d   Inode:1           硬链接:2
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:binfmt_misc_fs_t:s0
最近访问:2019-08-16 00:01:12.588839041 +0800
最近更改:2019-08-14 19:16:20.741997870 +0800                       #符合查找条件的文件      
最近改动:2019-08-14 19:16:20.741997870 +0800
创建时间:-

  

  (4)-amin  、 -cmin 、 -mmin 是以分钟为单位,用法和上面的一样

 

三、处理动作

  1、-ls :类似于对查找到的文件执行 “ls -l”命令;

  2、-ok COMMAND {} \ ;  :执行命令,交互式

  3、-exec COMMAND {} \ ;  :执行命令

  4、| xargs  COMMAND  :  执行命令

四、多个选项共同使用

  1、-a :与,同时满足,如果组合条件中只有 -a ,可以省略

  2、-o :或,只需要满足其一即可,优先级比 -a 低,如果要先执行,需要加(),()需要转译,即  \(··· \)

    3、-not :取反

  4、非A且非B : -not A -a -not B = -not \( A -o B \) 

  5、非A或非B :-not A -o -not B = -not \( A -a B \)