• Linux find


    1.find介绍

    linux查找命令find是linux运维中很重要、很常用的命令之一,find用于根据指定条件的匹配参数来搜索和查找文件和目录列表,我们可以通过权限、用户、用户组、文件类型、日期、大小等条件来查找文件。

    2.find语法

    find语法

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

    查找路径:指定的具体目标路径 

    查找条件:指定的查找标准,可以是权限、用户、用户组、文件类型、日期、大小等标准进行 

    处理动作:对符合条件的文件做相关操作,比如:输出屏幕,存放至某个文件中

    3.样例

    3.1.根据文件名称,使用find命令进行查找

    ->在当前工作目录中查找名称为ztj.txt的文件

    命令:

    find ztj.txt

    OR

    find . -name ztj.txt -maxdepth 1

    1. [root@rhel77 ~]# find ztj.txt
    2. ztj.txt
    3. [root@rhel77 ~]# find . -name ztj.txt -maxdepth 1
    4. find: warning: you have specified the -maxdepth option after a non-option argument -name, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
    5. ./ztj.txt
    6. [root@rhel77 ~]#

    ->在/root目录下,查找名称为ztj.txt的所有文件

    命令:

    find /root -name ztj.txt

    1. [root@rhel77 ~]# find /root -name ztj.txt
    2. /root/1/ztj.txt
    3. /root/ztj.txt
    4. /root/ztj11/ztj.txt
    5. [root@rhel77 ~]#

    ->在/root目录中查找名称为z的所有目录

    命令:

    find /root -type d -name z

    1. [root@rhel77 ~]# find /root -type d -name z
    2. /root/z
    3. [root@rhel77 ~]#

    其中,-type类型参数介绍如下:

    f:普通文件

    l:符号链接

    d:目录

    c:字符设备

    b:块设备

    s:套接字

    ->在/root目录下,查找所有以.zip和.log为扩展名的文件

    命令:

    find /root -type f name".zip"oname".log"" role="presentation">name".zip"oname".log" -ls

    1. [root@rhel77 ~]# find /root -type f \( -name "*.zip" -o -name "*.log" \) -ls
    2. 1731369 80 -rw-r--r-- 1 root root 81141 May 4 16:13 /root/wordpress_auto_install.log
    3. 1731610 4 -rw-r--r-- 1 root root 2059 Jul 28 15:14 /root/ztj.zip
    4. 3269480 4 -rw-r--r-- 1 root root 586 May 17 22:19 /root/disk.log
    5. 3257826 40 -rw-r--r-- 1 root root 40739 May 25 14:01 /root/extundelete-0.2.4/config.log
    6. 1731382 4 -rw-r--r-- 1 root root 642 Jul 21 14:04 /root/1.zip
    7. 1731605 4 -rw-r--r-- 1 root root 106 Aug 10 09:10 /root/urandom.log
    8. 1731400 4 -rw-r--r-- 1 root root 1475 Jul 21 14:08 /root/2.zip
    9. 70 4 -rw-r--r-- 1 root root 3334 Jul 20 08:50 /root/z.zip
    10. 3256369 4 -rw-r--r-- 1 root root 48 May 19 09:07 /root/zt1.log
    11. [root@rhel77 ~]#

    ->在/root目录下,查找所有以.png,.jpg,.php和.js为扩展名的文件

    命令:

    find /root -type f name".png"oname".jpg"oname".php"oname".js"" role="presentation">name".png"oname".jpg"oname".php"oname".js" -ls
     

    1. [root@rhel77 ~]# find /root -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.php" -o -name "*.js" \) -ls
    2. 3247961 0 -rw-r--r-- 1 root root 0 Aug 17 14:25 /root/1.png
    3. 3247965 0 -rw-r--r-- 1 root root 0 Aug 17 14:25 /root/2.jpg
    4. 3247966 0 -rw-r--r-- 1 root root 0 Aug 17 14:25 /root/3.php
    5. 3247967 0 -rw-r--r-- 1 root root 0 Aug 17 14:25 /root/4.js
    6. [root@rhel77 ~]#

    3.2.根据文件权限,使用find命令进行查找

    ->在/root目录下,查找权限为777的文件

    命令:

    find /root -type f -perm 0777  -maxdepth 1 -ls

    1. [root@rhel77 ~]# find /root -type f -perm 0777 -maxdepth 1 -ls
    2. find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
    3. 1731602 160 -rwxrwxrwx 1 root root 160059 Aug 16 09:56 /root/abc.txt
    4. 3256377 4 -rwxrwxrwx 1 root root 259 May 23 16:48 /root/user_info.txt
    5. [root@rhel77 ~]#

    ->在/root目录下,查找权限不是777的文件

    命令:

    find /root -type f ! -perm 777  -maxdepth 1 -ls

    1. [root@rhel77 ~]# find /root -type f ! -perm 777 -maxdepth 1 -ls | tail -n 5
    2. find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
    3. 3256384 4 -rwxr-xr-x 1 root root 988 May 23 22:33 /root/fdisk.sh
    4. 3257852 4 -rw-r--r-- 1 root root 62 May 27 14:42 /root/1234.txt
    5. 430437 4 -rwxr-xr-x 1 root root 64 Jun 5 21:23 /root/ztj-1.sh
    6. 1731615 4 -rwxr-xr-x 1 root root 21 Jun 7 13:55 /root/uuidgen.sh
    7. 430376 4 -rw-r--r-- 1 root root 41 Jul 21 13:59 /root/zzz.txt.bz2
    8. [root@rhel77 ~]#

    ->在/root目录下,查找权限为777的目录,将其权限设置为755

    命令:

    find /root -type d -perm 777 -maxdepth 1 -ls -exec chmod 755 {} \;
     

    1. [root@rhel77 ~]# find /root -type d -perm 777 -maxdepth 1 -ls -exec chmod 755 {} \;
    2. find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
    3. 69 12 drwxrwxrwx 24 root root 8192 Aug 16 09:27 /root
    4. 1729025 0 drwxrwxrwx 2 root root 90 Jul 20 10:29 /root/test

    ->在/root目录下,查找名称为cc.txt文件,并将其删除

    命令:

    find /root -type f -name cc.txt -maxdepth 1 | xargs rm -rf

    1. [root@rhel77 ~]# find /root -type f -name cc.txt -maxdepth 1 | xargs rm -rf
    2. find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
    3. [root@rhel77 ~]#

    OR

    find /root -type f -name cc.txt -maxdepth 1 -exec rm -rf {} \;

    1. [root@rhel77 ~]# find /root -type f -name cc.txt -maxdepth 1 -exec rm -rf {} \;
    2. find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
    3. [root@rhel77 ~]#

    ->在/root目录下,找出权限是600的文件

    命令:

    find /root/ -perm 600 -ls

    1. [root@rhel77 ~]# find /root/ -perm 600 -ls
    2. 3698739 4 -rw------- 1 root root 1679 Apr 27 14:09 /root/.ssh/id_rsa
    3. 1601 16 -rw------- 1 root root 14605 Aug 17 10:03 /root/.bash_history
    4. 3247958 8 -rw------- 1 root root 5648 Aug 17 10:03 /root/.viminfo
    5. 1731372 0 -rw------- 1 alice alice 0 May 27 21:04 /root/test/alice.txt
    6. 202108776 4 -rw------- 1 root root 11 Aug 17 13:32 /root/.cache/abrt/lastnotification
    7. 542180 4 -rw------- 1 root root 312 Aug 10 08:51 /root/.lesshst
    8. 3247962 4 -rw------- 1 root root 312 Aug 17 13:32 /root/.Xauthority
    9. 1731398 4 -rw------- 1 root root 306 Aug 10 09:08 /root/nohup.out
    10. 3256372 4 -rw------- 1 root root 15 Jul 17 08:35 /root/.lvm_history
    11. 3547010 4 -rw------- 1 root root 18 Jun 4 12:00 /root/.mysql_history
    12. [root@rhel77 ~]#

    上述命令(find /root/ -perm 600 -ls)会找到所有只有rw-------权限的文件。

    另外,

    如下命令:

    find /root/ -perm -600 -ls

    -600表示列出只要是包括了rw的其它位任意的文件

    1. [root@rhel77 ~]# find /root/ -perm -600 -ls |head -n 10
    2. 69 16 drwxr-xr-x 24 root root 12288 Aug 17 13:32 /root/
    3. 3180996 4 -rwxr-xr-x 1 root root 79 Apr 11 09:55 /root/access.sh
    4. 135138217 0 drwxr-xr-x 2 root root 6 Apr 24 19:08 /root/110
    5. 502725 4 -rw-r--r-- 1 root root 18 Dec 29 2013 /root/.bash_logout
    6. 542640 4 -rwxr-xr-x 1 root root 192 Mar 15 09:25 /root/earth-1.sh
    7. 1729048 4 -rw-r--r-- 1 root root 57 Mar 16 15:57 /root/symlinks-1.list
    8. 542203 4 -rwxr-xr-x 1 root root 94 Mar 30 13:57 /root/apache-1.sh
    9. 3193035 4 -rwxr-xr-x 1 root root 207 Apr 18 22:22 /root/spawn.sh
    10. 502727 4 -rw-r--r-- 1 root root 176 Dec 29 2013 /root/.bashrc
    11. 3181007 4 -rwxr-xr-x 1 root root 155 Apr 11 14:05 /root/case-2.sh
    12. [root@rhel77 ~]#

    如下命令:

    find /root/ -perm /600 -ls

    /600表示列出指定的权限符合r--------或w--------的文件。

    1. [root@rhel77 ~]# find /root/ -perm /600 -ls |head -n 10
    2. 69 16 drwxr-xr-x 24 root root 12288 Aug 17 13:32 /root/
    3. 3180996 4 -rwxr-xr-x 1 root root 79 Apr 11 09:55 /root/access.sh
    4. 135138217 0 drwxr-xr-x 2 root root 6 Apr 24 19:08 /root/110
    5. 502725 4 -rw-r--r-- 1 root root 18 Dec 29 2013 /root/.bash_logout
    6. 542640 4 -rwxr-xr-x 1 root root 192 Mar 15 09:25 /root/earth-1.sh
    7. 1729048 4 -rw-r--r-- 1 root root 57 Mar 16 15:57 /root/symlinks-1.list
    8. 542203 4 -rwxr-xr-x 1 root root 94 Mar 30 13:57 /root/apache-1.sh
    9. 3193035 4 -rwxr-xr-x 1 root root 207 Apr 18 22:22 /root/spawn.sh
    10. 502727 4 -rw-r--r-- 1 root root 176 Dec 29 2013 /root/.bashrc
    11. 3181007 4 -rwxr-xr-x 1 root root 155 Apr 11 14:05 /root/case-2.sh
    12. [root@rhel77 ~]#

    3.3.基于文件所有者和所属组,使用find命令进行查找

    ->在/root目录下,找出文件所有者为root,名称为ztj.txt的文件

    命令:

    find /root/ -user root -name ztj.txt -ls

    1. [root@rhel77 ~]# find /root/ -user root -name ztj.txt -ls
    2. 68916551 4 -rw-r--r-- 1 root root 28 Mar 30 16:54 /root/1/ztj.txt
    3. 3247948 0 -rw-r--r-- 1 root root 0 Aug 4 10:00 /root/ztj.txt
    4. 203522440 4 -rw-r--r-- 1 root root 4 Apr 23 2022 /root/ztj11/ztj.txt
    5. [root@rhel77 ~]#

    ->在/root目录下,找出文件属组为root,文件名称为process.txt的文件

    命令:

    find /root/ -group root -name process.txt -ls

    1. [root@rhel77 ~]# find /root/ -group root -name process.txt -ls
    2. 1731367 48 -rw-r--r-- 1 root root 48638 May 16 16:43 /root/process.txt
    3. [root@rhel77 ~]#

    ->在/root目录,查找所有者为root的所有.txt文件

    命令:

    find /root -user root -iname "*.txt" -ls

    其中,

    -iname:忽略name的大小写版本

    1. [root@rhel77 ~]# find /root -user root -iname "*.txt" -ls
    2. 1731370 4 -rw-r--r-- 3 root root 8 May 27 21:29 /root/test/a.txt
    3. 1731370 4 -rw-r--r-- 3 root root 8 May 27 21:29 /root/test/b.txt
    4. 1731370 4 -rw-r--r-- 3 root root 8 May 27 21:29 /root/test/d.txt
    5. 3181009 4 -rw-r--r-- 1 root root 14 Mar 23 15:18 /root/all.txt
    6. 3193028 4 -rw-r--r-- 1 root root 604 Apr 18 13:36 /root/system.txt
    7. 542186 4 -rw-r--r-- 1 root root 6 Mar 1 14:33 /root/bb.txt
    8. 1555878 4 -rw-r--r-- 1 root root 9 Jun 5 21:41 /root/user.txt
    9. 3193757 4 -rw-r--r-- 1 root root 154 Apr 26 08:56 /root/test.txt
    10. 137253126 4 -rw-r--r-- 1 root root 37 Aug 4 09:57 /root/123/zzz.txt
    11. 137119752 4 -rw-r--r-- 1 root root 6 Mar 15 10:12 /root/2/bb.txt
    12. 430370 4 -rw-r--r-- 1 root root 37 Aug 4 09:55 /root/zzz.txt
    13. 137259616 4 -rw-r--r-- 1 root root 3 May 27 17:05 /root/z/aa.txt
    14. 68916537 4 -rw-r--r-- 1 root root 2 Mar 30 16:54 /root/1/aa.txt
    15. 68916539 4 -rw-r--r-- 1 root root 14 Mar 30 16:54 /root/1/all.txt
    16. 68916543 4 -rw-r--r-- 1 root root 6 Mar 30 16:54 /root/1/bb.txt
    17. 68916545 4 -rw-r--r-- 1 root root 464 Mar 30 16:54 /root/1/cc.txt
    18. 68916547 4 -rw-r--r-- 1 root root 6 Mar 30 16:54 /root/1/user.txt
    19. 68916551 4 -rw-r--r-- 1 root root 28 Mar 30 16:54 /root/1/ztj.txt
    20. 3698754 4 -r--r--r-- 1 root root 10 Apr 28 08:58 /root/gg.txt
    21. 1731602 180 -rwxrwxrwx 1 root root 183335 Aug 17 13:54 /root/abc.txt
    22. 1731374 4 -rw-r--r-- 1 root root 58 May 13 20:12 /root/online.txt
    23. 1731378 4 -rw-r--r-- 1 root root 1636 May 13 20:12 /root/offline.txt
    24. 3269441 4 -rw-r--r-- 1 root root 132 May 9 22:15 /root/off.txt
    25. 3269442 4 -rw-r--r-- 1 root root 1 May 9 22:15 /root/on.txt
    26. 3269445 4 -rw-r--r-- 1 root root 1794 May 19 09:18 /root/a.txt
    27. 1731367 48 -rw-r--r-- 1 root root 48638 May 16 16:43 /root/process.txt
    28. 3247948 0 -rw-r--r-- 1 root root 0 Aug 4 10:00 /root/ztj.txt
    29. 1731387 4 -rw-r--r-- 1 root root 361 May 29 19:53 /root/1.txt
    30. 3193031 4 -rw-r--r-- 1 root root 56 Apr 20 10:52 /root/v.txt
    31. 1731403 512000 -rw-r--r-- 1 root root 524288000 May 31 08:42 /root/boc.txt
    32. 1729071 0 -rw-r--r-- 1 root root 0 Jul 20 08:33 /root/DDA/ztj/1.txt
    33. 1731379 0 -rw-r--r-- 1 root root 0 Jul 20 08:34 /root/DDA/ztj/2.txt
    34. 1731391 0 -rw-r--r-- 1 root root 0 Jul 20 08:34 /root/DDA/ztj/3.txt
    35. 1731394 0 -rw-r--r-- 1 root root 0 Jul 20 08:34 /root/DDA/ztj/4.txt
    36. 1731404 0 -rw-r--r-- 1 root root 0 Jul 20 08:34 /root/DDA/ztj/5.txt
    37. 1731406 0 -rw-r--r-- 1 root root 0 Jul 20 08:34 /root/DDA/ztj/6.txt
    38. 3698742 4 -rw-r--r-- 1 root root 102 Apr 23 21:12 /root/brace.txt
    39. 3247960 0 -rw-r--r-- 1 root root 0 Aug 17 13:53 /root/tttt.TXT
    40. 203522440 4 -rw-r--r-- 1 root root 4 Apr 23 2022 /root/ztj11/ztj.txt
    41. 203522446 0 lrwxrwxrwx 1 root root 7 Apr 23 2022 /root/ztj11/aa.txt -> ztj.txt
    42. 3256377 4 -rwxrwxrwx 1 root root 259 May 23 16:48 /root/user_info.txt
    43. 430371 4 -rw-r--r-- 1 root root 2137 Aug 4 09:55 /root/zzza.txt
    44. 3698759 0 lrwxrwxrwx 1 root root 7 Apr 28 09:06 /root/hh.txt -> ztj.txt
    45. 430369 4 -rw-r--r-- 1 root root 23 Jul 19 08:38 /root/ztj1.txt
    46. 3269443 4 -rw-r--r-- 1 root root 52 May 19 09:18 /root/b.txt
    47. 1731368 4 -rw-r--r-- 1 root root 892 May 16 16:56 /root/stat.txt
    48. 3256365 4 -rw-r--r-- 1 root root 6 May 18 21:01 /root/22.txt
    49. 3257852 4 -rw-r--r-- 1 root root 62 May 27 14:42 /root/1234.txt
    50. [root@rhel77 ~]#

    3.4.根据文件日期和时间,使用find命令进行查找

    linux系统里面的文件都有三种属性:
    访问(access)时间(-atime/天,-amin/分钟):用户最近一次访问时间
    修改(modify)时间(-mtime/天,-mmin/分钟):文件最后一次修改时间
    变化(change)时间(-ctime/天,-cmin/分钟):文件元数据(例如权限、属性等)最后一次修改时间

    ->在/root目录下,查找50天外修改的所有文件

    命令:

    find /root -mtime +50 -ls

    1. [root@rhel77 ~]# find /root -mtime +50 -ls |head -n 10
    2. 3180996 4 -rwxr-xr-x 1 root root 79 Apr 11 09:55 /root/access.sh
    3. 135138217 0 drwxr-xr-x 2 root root 6 Apr 24 19:08 /root/110
    4. 502725 4 -rw-r--r-- 1 root root 18 Dec 29 2013 /root/.bash_logout
    5. 542640 4 -rwxr-xr-x 1 root root 192 Mar 15 09:25 /root/earth-1.sh
    6. 1729048 4 -rw-r--r-- 1 root root 57 Mar 16 15:57 /root/symlinks-1.list
    7. 542203 4 -rwxr-xr-x 1 root root 94 Mar 30 13:57 /root/apache-1.sh
    8. 3193035 4 -rwxr-xr-x 1 root root 207 Apr 18 22:22 /root/spawn.sh
    9. 502727 4 -rw-r--r-- 1 root root 176 Dec 29 2013 /root/.bashrc
    10. 3181007 4 -rwxr-xr-x 1 root root 155 Apr 11 14:05 /root/case-2.sh
    11. 502728 4 -rw-r--r-- 1 root root 100 Dec 29 2013 /root/.cshrc
    12. [root@rhel77 ~]#

    ->在/root目录下,查找最近1小时内修改的所有文件

    命令:

    find /root -mmin -60 -ls
     

    1. [root@rhel77 ~]# find /root -mmin -60 -ls
    2. 69 16 drwxr-xr-x 24 root root 12288 Aug 17 13:53 /root
    3. 201482216 0 drwxr-xr-x 2 root root 30 Aug 17 13:32 /root/.cache/abrt
    4. 202108776 4 -rw------- 1 root root 11 Aug 17 13:32 /root/.cache/abrt/lastnotification
    5. 3247962 4 -rw------- 1 root root 312 Aug 17 13:32 /root/.Xauthority
    6. 1731602 180 -rwxrwxrwx 1 root root 184083 Aug 17 14:11 /root/abc.txt
    7. 3247960 0 -rw-r--r-- 1 root root 0 Aug 17 13:53 /root/tttt.TXT
    8. [root@rhel77 ~]#

    3.5.根据文件大小,使用find命令进行查找

    ->在/root目录下,找到大小为15MB的文件

    命令:

    find /root -size 15M -ls

    1. [root@rhel77 ~]# find /root -size 15M -ls
    2. 3268520 14924 -rw-r--r-- 1 root root 15279408 Jun 3 20:18 /root/mysql-community-server-minimal-5.7.42-1.el7.x86_64.rpm
    3. [root@rhel77 ~]#

    ->在/root目录下,找到大于1MB且小于16MB的所有文件

    命令:

    find /root -size +1M -size -16M -ls

    1. [root@rhel77 ~]# find /root -size +1M -size -16M -ls
    2. 3268520 14924 -rw-r--r-- 1 root root 15279408 Jun 3 20:18 /root/mysql-community-server-minimal-5.7.42-1.el7.x86_64.rpm
    3. 3698723 8872 -rw-r--r-- 1 root root 9082696 Apr 30 07:09 /root/wordpress-4.9.4-zh_CN.tar.gz
    4. 69023364 1860 -rw-r--r-- 1 root root 1904320 May 25 14:01 /root/extundelete-0.2.4/src/extundelete-extundelete.o
    5. 69023371 1296 -rwxr-xr-x 1 root root 1323312 May 25 14:01 /root/extundelete-0.2.4/src/extundelete
    6. 1731386 10224 -rw-r--r-- 1 root root 10466248 May 29 13:50 /root/aa.tar.gz
    7. [root@rhel77 ~]#

    3.6.基于inode删除ztj.txt文件(使用频率居高)

    命令:

    ls -li ztj.txt

    find /root -inum 3247948 -exec rm -rf {} \;

    1. [root@rhel77 ~]# pwd
    2. /root
    3. [root@rhel77 ~]# ls -li ztj.txt
    4. 3247948 -rw-r--r-- 1 root root 0 Aug 4 10:00 ztj.txt
    5. [root@rhel77 ~]# find /root -inum 3247948 -ls
    6. 3247948 0 -rw-r--r-- 1 root root 0 Aug 4 10:00 /root/ztj.txt
    7. [root@rhel77 ~]# find /root -inum 3247948 -exec rm -rf {} \;
    8. [root@rhel77 ~]# ls -li ztj.txt
    9. ls: cannot access ztj.txt: No such file or directory
    10. [root@rhel77 ~]#

  • 相关阅读:
    经典快速制作套打证书模板(xls)大全
    运维排查 | Systemd 之服务停止后状态为 failed
    卷?中学生开始学习人工智能和大模型,附课件!
    IO拷贝文件大全
    操作系统02_进程管理_同步互斥信号量_PV操作_死锁---软考高级系统架构师007
    P4用软件实现和硬件实现的区别
    Linux程序之可变参数&&选项那些事!
    Profinet IO从站数据 转EtherCAT项目案例
    Vue使用Echarts绘画地图可视化
    九九重阳,永恒之约 | AIGC数字永生时代,揭示永生探索的全新维度!
  • 原文地址:https://blog.csdn.net/z19861216/article/details/132311855