zoukankan      html  css  js  c++  java
  • 第二十四章 Find命令详细介绍

    一、Find 概述

    可以根据文件的名称、文件大小、文件的修改时间、文件的类型、文件的权限、文件的属主属组、文件的目录层级进行查找


    Find的语法:

    find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

    命令 路径 选项 表达式 动作

    类似于:

    查找 地区 妹子 18-25 约

     

    二、根据文件名称查找

    选项:

    -name #根据名称查找

    -i #忽略大小写 -iname

    通配符

    * #所有

    ? #匹配任意一个字符 只能匹配一个

    [] #匹配中括号中的任意一个字符

    [^] #排除中括号中的字符


    #精确查找

    [root@jindada ~]# find / -name "hostnamectl"
    /usr/bin/hostnamectl
    /usr/share/bash-completion/completions/hostnamectl

    #查找以什么开头的

    [root@jindada ~]# find / -name "hostnamectl*"
    /usr/bin/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/bash-completion/completions/hostnamectl

    #以什么为结尾的

    [root@jindada ~]# find / -name "*hostnamectl"
    /usr/bin/hostnamectl
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/zsh/site-functions/_hostnamectl

    #查找包含某个字符串的查找

    [root@jindada ~]# touch /tmp/rrhostnamectlfg
    [root@jindada ~]# find / -name "*hostnamectl*"
    /tmp/rrhostnamectlfg
    /usr/bin/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/zsh/site-functions/_hostnamectl

    #忽略大小写

    [root@jindada ~]# touch Hostnamectl
    [root@jindada ~]# find / -name "*hostnamectl*"
    /tmp/rrhostnamectlfg
    /usr/bin/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/zsh/site-functions/_hostnamectl
    [root@jindada ~]# find / -iname "*hostnamectl*"
    /root/Hostnamectl
    /tmp/rrhostnamectlfg
    /usr/bin/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/zsh/site-functions/_hostnamectl

     

    [root@jindada ~]# mkdir test
    [root@jindada ~]# touch test/hostnamectl{a..g}
    [root@jindada ~]# touch test/hostnamectl{o..t}
    [root@jindada ~]# touch test/hostnamectl{o..t}123
    [root@jindada ~]# ll test/
    total 0
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectla
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlb
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlc
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectld
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectle
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlf
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlg
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlo
    -rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlo123
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlp
    -rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlp123
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlq
    -rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlq123
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlr
    -rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlr123
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectls
    -rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectls123
    -rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlt
    -rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlt123

     

    [root@jindada ~]# find /root -name "hostnamectl*"
    /root/test/hostnamectla
    /root/test/hostnamectlb
    /root/test/hostnamectlc
    /root/test/hostnamectld
    /root/test/hostnamectle
    /root/test/hostnamectlf
    /root/test/hostnamectlg
    /root/test/hostnamectlo
    /root/test/hostnamectlp
    /root/test/hostnamectlq
    /root/test/hostnamectlr
    /root/test/hostnamectls
    /root/test/hostnamectlt
    /root/test/hostnamectlo123
    /root/test/hostnamectlp123
    /root/test/hostnamectlq123
    /root/test/hostnamectlr123
    /root/test/hostnamectls123
    /root/test/hostnamectlt123
    [root@jindada ~]# find /root -name "hostnamectl?"
    /root/test/hostnamectla
    /root/test/hostnamectlb
    /root/test/hostnamectlc
    /root/test/hostnamectld
    /root/test/hostnamectle
    /root/test/hostnamectlf
    /root/test/hostnamectlg
    /root/test/hostnamectlo
    /root/test/hostnamectlp
    /root/test/hostnamectlq
    /root/test/hostnamectlr
    /root/test/hostnamectls
    /root/test/hostnamectlt


    [root@jindada ~]# find /root -name "hostnamectl[abcd]"
    /root/test/hostnamectla
    /root/test/hostnamectlb
    /root/test/hostnamectlc
    /root/test/hostnamectld


    [root@jindada ~]# find /root -name "hostnamectl[^b]"
    /root/test/hostnamectla
    /root/test/hostnamectlc
    /root/test/hostnamectld
    /root/test/hostnamectle
    /root/test/hostnamectlf
    /root/test/hostnamectlg
    /root/test/hostnamectlo
    /root/test/hostnamectlp
    /root/test/hostnamectlq
    /root/test/hostnamectlr
    /root/test/hostnamectls
    /root/test/hostnamectlt

     

    三、根据文件类型查找

    选项:

    -type #根据类型进行查找

    f #普通文件

    d #目录

    l #软链接

    s #套接字 socket文件

    p #管道文件

    b #块设备 硬盘 硬盘分区 镜像光盘

    c #字符设备

    #查找所有的普通文件,包括隐藏文件


    [root@jindada ~]# find /root -type f
    /root/.bash_logout
    /root/.bash_profile
    /root/.cshrc
    /root/.tcshrc
    /root/.bash_history
    /root/.lesshst
    /root/.viminfo
    /root/Hostname
    /root/Hostnamectl
    /root/test/hostnamectla
    /root/test/hostnamectlb
    /root/test/hostnamectlc
    /root/test/hostnamectld

    #所有的目录 包括隐藏目录 也包含自己的本身

    [root@jindada ~]# find /root -type d
    /root
    /root/test
    /root/.pki
    /root/.pki/nssdb

    #tree命令会把软链接也统计成目录 软链接的源文件是目录 find不会

    [root@jindada ~]# tree -ad /root
    /root
    ├── opt -> /opt/
    ├── .pki
    │   └── nssdb
    └── test

    4 directories


    [root@jindada ~]# find /dev -type s
    /dev/log

    [root@jindada ~]# find /run -type p
    /run/systemd/inhibit/1.ref
    /run/systemd/sessions/1.ref
    /run/systemd/initctl/fifo


    [root@jindada ~]# find /root -type l
    /root/opt

    [root@jindada ~]# find /dev -type b
    /dev/sda3
    /dev/sda2
    /dev/sda1
    /dev/sda
    /dev/sr0

    [root@jindada ~]# find /dev -type c
    /dev/vsock
    /dev/vcsa6
    /dev/vcs6
    /dev/vcsa5


    [root@jindada ~]# find / -type d -name "hostnamectl"
    /root/hostnamectl

     

    四、根据文件大小查找

    选项:

    -size #根据文件大小查找

    +n #大于

    -n #小于

    n #精确匹配


    b k M G #单位


    #查找空文件

    [root@jindada ~]# find /var/log/ -size 0b
    /var/log/tallylog
    /var/log/anaconda/ks-script-3PCKae.log
    /var/log/boot.log
    /var/log/firewalld
    /var/log/maillog-20200726
    /var/log/spooler-20200726
    /var/log/spooler
    /var/log/spooler-20200716
    /var/log/nginx/error.log
    /var/log/nginx/access.log
    /var/log/spooler-20200723
    [root@jindada ~]# ll /var/log/tallylog
    -rw-------. 1 root root 0 Jul 6 02:13 /var/log/tallylog


    [root@jindada ~]# find /var/log/ -size -1k -ls
    67159586 0 -rw------- 1 root root 0 Jul 6 02:13 /var/log/tallylog
    67563450 0 -rw------- 1 root root 0 Jul 6 02:17 /var/log/anaconda/ks-script-3PCKae.log
    67563454 0 -rw------- 1 root root 0 Jul 27 17:35 /var/log/boot.log
    67563460 0 -rw-r--r-- 1 root root 0 Jul 6 02:17 /var/log/firewalld
    67588777 0 -rw------- 1 root root 0 Jul 23 03:13 /var/log/maillog-20200726
    67588781 0 -rw------- 1 root root 0 Jul 23 03:13 /var/log/spooler-20200726
    67588808 0 -rw------- 1 root root 0 Jul 26 03:33 /var/log/spooler
    67528019 0 -rw------- 1 root root 0 Jul 6 02:14 /var/log/spooler-20200716
    134348936 0 -rw-r--r-- 1 root root 0 Jul 20 19:50 /var/log/nginx/error.log
    134348938 0 -rw-r--r-- 1 root root 0 Jul 20 19:50 /var/log/nginx/access.log
    67113674 0 -rw------- 1 root root 0 Jul 16 03:25 /var/log/spooler-20200723
    [root@jindada ~]# find /var/log/ -size 1k -ls #字节的大小在find中四舍五入

    67160720 4 -rw-r--r-- 1 root root 193 Jul 6 02:13 /var/log/grubby_prune_debug
    681834 0 drwxr-xr-x 2 root root 23 Jul 6 02:17 /var/log/tuned
    714023 0 drwx------ 2 root root 23 Jul 6 02:17 /var/log/audit
    67284924 0 drwxr-xr-x 2 root root 176 Jul 6 02:17 /var/log/anaconda
    134317666 0 drwxr-xr-x 2 root root 6 Jul 6 02:17 /var/log/rhsm
    67112876 4 -rw-r--r-- 1 root root 696 Jul 6 09:06 /var/log/vmware-network.5.log
    67112867 4 -rw-r--r-- 1 root root 678 Jul 13 16:29 /var/log/vmware-network.2.log
    67112878 4 -rw-r--r-- 1 root root 674 Jul 6 17:07 /var/log/vmware-network.4.log
    67112882 4 -rw-r--r-- 1 root root 678 Jul 20 19:45 /var/log/vmware-network.1.log
    67528018 4 -rw------- 1 root root 558 Jul 13 16:29 /var/log/maillog-20200716
    134348871 0 drwxrwx--- 2 nginx root 41 Jul 20 19:50 /var/log/nginx
    67588805 4 -rw------- 1 root root 186 Jul 27 16:30 /var/log/maillog
    67588807 4 -rw------- 1 root root 679 Jul 27 16:30 /var/log/secure
    67112916 4 -rw-r--r-- 1 root root 678 Jul 27 16:29 /var/log/vmware-network.log


    [root@jindada ~]# find /var/log/ -type f -size 20k
    /var/log/cron-20200726
    [root@jindada ~]# find /var/log/ -type f -size 20k -ls
    67588776 20 -rw------- 1 root root 19815 Jul 26 03:33 /var/log/cron-20200726

    [root@jindada ~]# find /var/log/ -type f -size 6k -ls
    75 8 -rw-r--r-- 1 root root 6085 Jul 27 16:29 /var/log/tuned/tuned.log
    67113677 8 -rw------- 1 root root 6005 Jul 27 18:01 /var/log/cron
    67528017 8 -rw------- 1 root root 5865 Jul 13 16:29 /var/log/secure-20200716
    67112870 8 -rw-r--r-- 1 root root 5650 Jul 6 08:52 /var/log/vmware-network.9.log
    67112865 8 -rw-r--r-- 1 root root 5650 Jul 9 10:36 /var/log/vmware-network.3.log


    #根据范围进行查找

    [root@jindada ~]# find /var/log/ -type f -size +100k -size -1000k
    /var/log/anaconda/syslog
    /var/log/anaconda/packaging.log
    /var/log/anaconda/storage.log
    /var/log/dmesg.old
    /var/log/messages-20200716
    /var/log/messages-20200723
    /var/log/messages
    /var/log/dmesg
    [root@jindada ~]# find /var/log/ -type f -size +100k -size -1000k -ls
    67496291 276 -rw------- 1 root root 281510 Jul 6 02:17 /var/log/anaconda/syslog
    67563447 112 -rw------- 1 root root 110647 Jul 6 02:17 /var/log/anaconda/packaging.log
    67563448 124 -rw------- 1 root root 124184 Jul 6 02:17 /var/log/anaconda/storage.log
    67112877 120 -rw-r--r-- 1 root root 122832 Jul 20 19:45 /var/log/dmesg.old
    67528016 388 -rw------- 1 root root 395555 Jul 16 03:25 /var/log/messages-20200716
    67113672 148 -rw------- 1 root root 148158 Jul 23 03:13 /var/log/messages-20200723
    67588806 120 -rw------- 1 root root 122869 Jul 27 18:01 /var/log/messages
    67112864 120 -rw-r--r-- 1 root root 122838 Jul 27 16:29 /var/log/dmesg


    #四舍五入 1k

    [root@jindada ~]# find /var/log/ -type f -size 5k
    /var/log/vmware-network.8.log
    [root@jindada ~]# find /var/log/ -type f -size 5k -ls
    67112873 8 -rw-r--r-- 1 root root 4127 Jul 6 09:05 /var/log/vmware-network.8.log


    #以M为单位查找时,所有小于1M的文件都四舍五入到1M

    [root@jindada ~]# find /var/log/ -type f -size 1M -ls
    67160720 4 -rw-r--r-- 1 root root 193 Jul 6 02:13 /var/log/grubby_prune_debug
    67284922 48 -rw-rw-r-- 1 root utmp 45696 Jul 27 16:30 /var/log/wtmp
    67284923 8 -rw------- 1 root utmp 6912 Jul 23 12:09 /var/log/btmp
    75 8 -rw-r--r-- 1 root root 6085 Jul 27 16:29 /var/log/tuned/tuned.log
    67495714 28 -rw------- 1 root root 26591 Jul 6 02:17 /var/log/anaconda/anaconda.log
    67496291 276 -rw------- 1 root root 281510 Jul 6 02:17 /var/log/anaconda/syslog
    67563444 24 -rw------- 1 root root 21872 Jul 6 02:17 /var/log/anaconda/X.log
    67563445 32 -rw------- 1 root root 29721 Jul 6 02:17 /var/log/anaconda/program.log
    67563447 112 -rw------- 1 root root 110647 Jul 6 02:17 /var/log/anaconda/packaging.log
    67563448 124 -rw------- 1 root root 124184 Jul 6 02:17 /var/log/anaconda/storage.log
    67563449 4 -rw------- 1 root root 4017 Jul 6 02:17 /var/log/anaconda/ifcfg.log
    67563456 12 -rw-r--r-- 1 root root 10054 Jul 27 16:29 /var/log/vmware-vmsvc.log
    67563457 8 -rw-r--r-- 1 root root 6934 Jul 27 16:29 /var/log/vmware-vgauthsvc.log.0
    67113677 8 -rw------- 1 root root 6005 Jul 27 18:01 /var/log/cron
    67588778 12 -rw------- 1 root root 9327 Jul 26 03:33 /var/log/messages-20200726
    67588779 16 -rw------- 1 root root 13606 Jul 24 12:11 /var/log/secure-20200726
    67112873 8 -rw-r--r-- 1 root root 4127 Jul 6 09:05 /var/log/vmware-network.8.log
    67112876 4 -rw-r--r-- 1 root root 696 Jul 6 09:06 /var/log/vmware-network.5.log
    67112867 4 -rw-r--r-- 1 root root 678 Jul 13 16:29 /var/log/vmware-network.2.log
    67588799 8 -rw------- 1 root root 8015 Jul 27 17:35 /var/log/boot.log-20200727
    67112877 120 -rw-r--r-- 1 root root 122832 Jul 20 19:45 /var/log/dmesg.old
    67112871 4 -rw-r--r-- 1 root root 3986 Jul 6 09:05 /var/log/vmware-network.7.log
    67112878 4 -rw-r--r-- 1 root root 674 Jul 6 17:07 /var/log/vmware-network.4.log
    67112882 4 -rw-r--r-- 1 root root 678 Jul 20 19:45 /var/log/vmware-network.1.log
    67112913 20 -rw------- 1 root root 16395 Jul 10 03:20 /var/log/boot.log-20200710
    67112924 4 -rw------- 1 root root 3925 Jul 22 08:51 /var/log/yum.log
    67112866 8 -rw------- 1 root root 7969 Jul 13 17:29 /var/log/boot.log-20200713
    67112869 32 -rw------- 1 root root 32040 Jul 16 03:25 /var/log/cron-20200716
    67528018 4 -rw------- 1 root root 558 Jul 13 16:29 /var/log/maillog-20200716
    67528016 388 -rw------- 1 root root 395555 Jul 16 03:25 /var/log/messages-20200716
    67528017 8 -rw------- 1 root root 5865 Jul 13 16:29 /var/log/secure-20200716
    67112870 8 -rw-r--r-- 1 root root 5650 Jul 6 08:52 /var/log/vmware-network.9.log
    67491686 8 -rw------- 1 root root 8015 Jul 20 20:25 /var/log/boot.log-20200720
    67113669 40 -rw------- 1 root root 37990 Jul 23 03:13 /var/log/cron-20200723
    67113670 4 -rw------- 1 root root 1856 Jul 22 11:11 /var/log/maillog-20200723
    67113672 148 -rw------- 1 root root 148158 Jul 23 03:13 /var/log/messages-20200723
    67113673 48 -rw------- 1 root root 48914 Jul 22 12:22 /var/log/secure-20200723
    67588776 20 -rw------- 1 root root 19815 Jul 26 03:33 /var/log/cron-20200726
    67588805 4 -rw------- 1 root root 186 Jul 27 16:30 /var/log/maillog
    67588806 120 -rw------- 1 root root 122869 Jul 27 18:01 /var/log/messages
    67588807 4 -rw------- 1 root root 679 Jul 27 16:30 /var/log/secure
    67112864 120 -rw-r--r-- 1 root root 122838 Jul 27 16:29 /var/log/dmesg
    67112875 4 -rw-r--r-- 1 root root 3986 Jul 6 09:06 /var/log/vmware-network.6.log
    67112865 8 -rw-r--r-- 1 root root 5650 Jul 9 10:36 /var/log/vmware-network.3.log
    67112916 4 -rw-r--r-- 1 root root 678 Jul 27 16:29 /var/log/vmware-network.log
    [root@jindada ~]# find /var/log/ -type f -size -1M -ls
    67159586 0 -rw------- 1 root root 0 Jul 6 02:13 /var/log/tallylog
    67563450 0 -rw------- 1 root root 0 Jul 6 02:17 /var/log/anaconda/ks-script-3PCKae.log
    67563454 0 -rw------- 1 root root 0 Jul 27 17:35 /var/log/boot.log
    67563460 0 -rw-r--r-- 1 root root 0 Jul 6 02:17 /var/log/firewalld
    67588777 0 -rw------- 1 root root 0 Jul 23 03:13 /var/log/maillog-20200726
    67588781 0 -rw------- 1 root root 0 Jul 23 03:13 /var/log/spooler-20200726
    67588808 0 -rw------- 1 root root 0 Jul 26 03:33 /var/log/spooler
    67528019 0 -rw------- 1 root root 0 Jul 6 02:14 /var/log/spooler-20200716
    134348936 0 -rw-r--r-- 1 root root 0 Jul 20 19:50 /var/log/nginx/error.log
    134348938 0 -rw-r--r-- 1 root root 0 Jul 20 19:50 /var/log/nginx/access.log
    67113674 0 -rw------- 1 root root 0 Jul 16 03:25 /var/log/spooler-20200723


    [root@jindada ~]# find /var/log/ -type f -size 2M -ls
    67263633 40 -rw-r--r-- 1 root root 1946764 Jul 27 16:30 /var/log/lastlog
    714345 1436 -rw------- 1 root root 1468869 Jul 27 18:01 /var/log/audit/audit.log
    67563451 1520 -rw------- 1 root root 1552657 Jul 6 02:17 /var/log/anaconda/journal.log
    [root@jindada ~]# ll -h /var/log/lastlog
    -rw-r--r--. 1 root root 1.9M Jul 27 16:30 /var/log/lastlog
    [root@jindada ~]# ll -h /var/log/audit/audit.log
    -rw-------. 1 root root 1.5M Jul 27 18:01 /var/log/audit/audit.log


    [root@jindada ~]# find /var/log/ -type f -size +2M -ls
    67113676 5704 -rw-r--r-- 1 root root 5840292 Jul 27 17:56 /var/log/test.log


    [root@jindada ~]# find /var/log/ -type f -size 6M -ls
    67113676 5704 -rw-r--r-- 1 root root 5840292 Jul 27 17:56 /var/log/test.log

     

    [root@jindada ~]# find /var/log/ -type f -size +2M -size -7M
    /var/log/test.log


    [root@jindada ~]# dd </dev/zero >/var/log/123.log bs=100M count=13
    13+0 records in
    13+0 records out
    1363148800 bytes (1.4 GB) copied, 28.178 s, 48.4 MB/s
    [root@jindada ~]# ll /var/log/123.log
    -rw-r--r-- 1 root root 1363148800 Jul 27 18:17 /var/log/123.log
    [root@jindada ~]# ll /var/log/123.log -h
    -rw-r--r-- 1 root root 1.3G Jul 27 18:17 /var/log/123.log
    [root@jindada ~]# find /var/log/ -type f -size +1G -ls
    67588811 1331200 -rw-r--r-- 1 root root 1363148800 Jul 27 18:17 /var/log/123.log
    [root@jindada ~]# find /var/log/ -type f -size 2G -ls
    67588811 1331200 -rw-r--r-- 1 root root 1363148800 Jul 27 18:17 /var/log/123.log

     

    五、根据文件时间查找

    选项:

    -mtime #最后修改时间

    +n #多少天以前

    -n #多少天以内

    n #具体某一天


    [root@jindada ~]# for i in {01..27};do date -s 2020/07/$i && touch data/file-${i}.txt;done

    [root@jindada ~]#
    [root@jindada ~]# ntpdate ntp.aliyun.com

    [root@jindada ~]# ll data/
    total 0
    -rw-r--r-- 1 root root 0 Jul 10 00:00 file-10.txt
    -rw-r--r-- 1 root root 0 Jul 11 00:00 file-11.txt
    -rw-r--r-- 1 root root 0 Jul 12 00:00 file-12.txt
    -rw-r--r-- 1 root root 0 Jul 13 00:00 file-13.txt
    -rw-r--r-- 1 root root 0 Jul 14 00:00 file-14.txt
    -rw-r--r-- 1 root root 0 Jul 15 00:00 file-15.txt
    -rw-r--r-- 1 root root 0 Jul 16 00:00 file-16.txt
    -rw-r--r-- 1 root root 0 Jul 17 00:00 file-17.txt
    -rw-r--r-- 1 root root 0 Jul 18 00:00 file-18.txt
    -rw-r--r-- 1 root root 0 Jul 19 00:00 file-19.txt
    -rw-r--r-- 1 root root 0 Jul 1 00:00 file-1.txt
    -rw-r--r-- 1 root root 0 Jul 20 00:00 file-20.txt
    -rw-r--r-- 1 root root 0 Jul 21 00:00 file-21.txt
    -rw-r--r-- 1 root root 0 Jul 22 00:00 file-22.txt
    -rw-r--r-- 1 root root 0 Jul 23 00:00 file-23.txt
    -rw-r--r-- 1 root root 0 Jul 24 00:00 file-24.txt
    -rw-r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
    -rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
    -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
    -rw-r--r-- 1 root root 0 Jul 2 00:00 file-2.txt
    -rw-r--r-- 1 root root 0 Jul 3 00:00 file-3.txt
    -rw-r--r-- 1 root root 0 Jul 4 00:00 file-4.txt
    -rw-r--r-- 1 root root 0 Jul 5 00:00 file-5.txt
    -rw-r--r-- 1 root root 0 Jul 6 00:00 file-6.txt
    -rw-r--r-- 1 root root 0 Jul 7 00:00 file-7.txt
    -rw-r--r-- 1 root root 0 Jul 8 00:00 file-8.txt
    -rw-r--r-- 1 root root 0 Jul 9 00:00 file-9.txt
    [root@jindada ~]#
    [root@jindada ~]# find /root -type f -mtime +7 #查找7天以前的
    /root/.bash_logout
    /root/.cshrc
    /root/.tcshrc
    /root/.lesshst
    /root/.vimrc
    /root/data/file-1.txt
    /root/data/file-2.txt
    /root/data/file-3.txt
    /root/data/file-4.txt
    /root/data/file-5.txt
    /root/data/file-6.txt
    /root/data/file-7.txt
    /root/data/file-8.txt
    /root/data/file-9.txt
    /root/data/file-10.txt
    /root/data/file-11.txt
    /root/data/file-12.txt
    /root/data/file-13.txt
    /root/data/file-14.txt
    /root/data/file-15.txt
    /root/data/file-16.txt
    /root/data/file-17.txt
    /root/data/file-18.txt
    /root/data/file-19.txt
    [root@jindada ~]# find /root -type f -mtime 7 #查找第七天
    /root/data/file-20.txt


    [root@jindada ~]# find /root -type f -mtime -7 #查找七天以内
    /root/.bash_profile
    /root/.bash_history
    /root/.viminfo
    /root/.bashrc
    /root/data/file-21.txt
    /root/data/file-22.txt
    /root/data/file-23.txt
    /root/data/file-24.txt
    /root/data/file-25.txt
    /root/data/file-26.txt
    /root/data/file-27.txt


    [root@jindada ~]# find /root -type f -mtime +3 |xargs rm -f


    [root@jindada ~]# find /var/log/ -type f -size +1G -mtime -1 | xargs rm -f

     

    六、根据文件权限查找

    选项:

    -perm #根据权限查找

    -421 #包含这些权限

    421 #精确匹配

    /421 #包含其中的某个权限 三个身份中满足一个则匹配

    ! #取反

    [root@jindada ~]# find /root -type f
    /root/.bash_history
    /root/.viminfo
    /root/data/file-24.txt
    /root/data/file-25.txt
    /root/data/file-26.txt
    /root/data/file-27.txt
    [root@jindada ~]# find /root ! -type f #排除普通的文件的其他所有类型文件
    /root
    /root/.pki
    /root/.pki/nssdb
    /root/data

     

    #精确匹配

    [root@jindada ~]# chmod 633 data/file-24.txt
    [root@jindada ~]# ll data/
    total 0
    -rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
    -rw-r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
    -rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
    -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
    [root@jindada ~]# find data/ -type f -perm 644
    data/file-25.txt
    data/file-26.txt
    data/file-27.txt
    [root@jindada ~]# find data/ -type f -perm 633
    data/file-24.txt


    #满足查找最低权限 每个身份都有满足

    [root@jindada ~]# find data/ -type f -perm -644
    data/file-26.txt
    data/file-27.txt
    [root@jindada ~]# ll data/
    total 0
    -rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
    -r--r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
    -rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
    -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
    [root@jindada ~]# chmod 666 data/file-25.txt
    [root@jindada ~]# find data/ -type f -perm -644
    data/file-25.txt
    data/file-26.txt
    data/file-27.txt

    [root@jindada ~]# chmod 744 data/file-26.txt
    [root@jindada ~]# find data/ -type f -perm -644
    data/file-25.txt
    data/file-26.txt
    data/file-27.txt


    #满足一个身份的某个权限就可以

    [root@jindada ~]# ll data/
    total 0
    -rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
    -rw-rw-rw- 1 root root 0 Jul 25 00:00 file-25.txt
    -rwxr--r-- 1 root root 0 Jul 26 00:00 file-26.txt
    -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
    [root@jindada ~]# find data/ -type f -perm /644
    data/file-24.txt
    data/file-25.txt
    data/file-26.txt
    data/file-27.txt


    [root@jindada ~]# chmod 333 data/file-24.txt
    [root@jindada ~]# find data/ -type f -perm /644
    data/file-24.txt
    data/file-25.txt
    data/file-26.txt
    data/file-27.txt
    [root@jindada ~]# ll data/
    total 0
    --wx-wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
    -rw-rw-rw- 1 root root 0 Jul 25 00:00 file-25.txt
    -rwxr--r-- 1 root root 0 Jul 26 00:00 file-26.txt
    -rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
    [root@jindada ~]# find data/ -type f -perm /444
    data/file-25.txt
    data/file-26.txt
    data/file-27.txt


    [root@jindada ~]# find / -perm -4000 -ls
    201418870 24 -rws--x--x 1 root root 24048 Oct 31 2018 /usr/bin/chfn
    201418873 24 -rws--x--x 1 root root 23960 Oct 31 2018 /usr/bin/chsh
    201369302 32 -rwsr-xr-x 1 root root 32096 Oct 31 2018 /usr/bin/fusermount
    201418745 80 -rwsr-xr-x 1 root root 78272 Oct 31 2018 /usr/bin/gpasswd


    [root@jindada ~]# find / -perm -2000 -ls
    201368725 16 -r-xr-sr-x 1 root tty 15344 Jun 10 2014 /usr/bin/wall
    201418931 20 -rwxr-sr-x 1 root tty 19624 Oct 31 2018 /usr/bin/write
    201614897 376 ---x--s--x 1 root nobody 382240 Apr 11 2018 /usr/bin/ssh-agent
    201682585 40 -rwx--s--x 1 root slocate 40520 Apr 11 2018 /usr/bin/locate
    682454 216 -rwxr-sr-x 1 root postdrop 218632 Oct 31 2018 /usr/sbin/postdrop


    [root@jindada ~]# find / -perm -1000 -ls
    67108936 4 drwxrwxrwt 16 root root 4096 Jul 27 2020 /tmp
    187047 0 drwxrwxrwt 2 root root 6 Jul 6 02:14 /tmp/.font-unix
    67284921 0 drwxrwxrwt 2 root root 6 Jul 6 02:14 /tmp/.XIM-unix
    134469085 0 drwxrwxrwt 2 root root 6 Jul 6 02:14 /tmp/.ICE-unix
    201458049 0 drwxrwxrwt 2 root root 6 Jul 6 02:14 /tmp/.X11-unix

     

    七、根据文件属主属组查找

    选项:

    -user #根据属主

    -group #根据属组

    -nouser #没有属主

    -nogroup #没有属组

    #查找属主为ops01

    [root@jindada ~]# find / -user ops01 -ls
    201696842 0 -rw-rw---- 1 ops01 mail 0 Jul 24 09:08 /var/spool/mail/ops01
    67588770 0 drwx------ 2 ops01 ops01 83 Jul 24 09:10 /home/ops01
    67588774 4 -rw-r--r-- 1 ops01 ops01 18 Oct 31 2018 /home/ops01/.bash_logout
    67588780 4 -rw-r--r-- 1 ops01 ops01 193 Oct 31 2018 /home/ops01/.bash_profile
    67588782 4 -rw-r--r-- 1 ops01 ops01 231 Oct 31 2018 /home/ops01/.bashrc
    67588795 4 -rw------- 1 ops01 ops01 145 Jul 24 09:55 /home/ops01/.bash_history
    820161 4 -rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 /data/ops01.log

    #查找属主为ops01并且 属组为ops01


    [root@jindada ~]# find / -user ops01 -group ops01 -ls
    67588770 0 drwx------ 2 ops01 ops01 83 Jul 24 09:10 /home/ops01
    67588774 4 -rw-r--r-- 1 ops01 ops01 18 Oct 31 2018 /home/ops01/.bash_logout
    67588780 4 -rw-r--r-- 1 ops01 ops01 193 Oct 31 2018 /home/ops01/.bash_profile
    67588782 4 -rw-r--r-- 1 ops01 ops01 231 Oct 31 2018 /home/ops01/.bashrc
    67588795 4 -rw------- 1 ops01 ops01 145 Jul 24 09:55 /home/ops01/.bash_history

    # -a 并且

    [root@jindada ~]# find / -user ops01 -a -group ops01 -ls
    67588770 0 drwx------ 2 ops01 ops01 83 Jul 24 09:10 /home/ops01
    67588774 4 -rw-r--r-- 1 ops01 ops01 18 Oct 31 2018 /home/ops01/.bash_logout
    67588780 4 -rw-r--r-- 1 ops01 ops01 193 Oct 31 2018 /home/ops01/.bash_profile
    67588782 4 -rw-r--r-- 1 ops01 ops01 231 Oct 31 2018 /home/ops01/.bashrc
    67588795 4 -rw------- 1 ops01 ops01 145 Jul 24 09:55 /home/ops01/.bash_history


    [root@jindada ~]# find / -user ops01 -a -group ops_group -ls
    67495942 0 --wx-wx-wx 1 ops01 ops_group 0 Jul 24 00:00 /root/data/file-24.txt
    820161 4 -rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 /data/ops01.log

    #括号前后要有空格 也需要使用转义字符进行转义 -o 或者

    [root@jindada ~]# find / ( -user ops01 -o -group ops_group ) -ls
    67495942 0 --wx-wx-wx 1 ops01 ops_group 0 Jul 24 00:00 /root/data/file-24.txt
    201696842 0 -rw-rw---- 1 ops01 mail 0 Jul 24 09:08 /var/spool/mail/ops01
    67588770 0 drwx------ 2 ops01 ops01 83 Jul 24 09:10 /home/ops01
    67588774 4 -rw-r--r-- 1 ops01 ops01 18 Oct 31 2018 /home/ops01/.bash_logout
    67588780 4 -rw-r--r-- 1 ops01 ops01 193 Oct 31 2018 /home/ops01/.bash_profile
    67588782 4 -rw-r--r-- 1 ops01 ops01 231 Oct 31 2018 /home/ops01/.bashrc
    67588795 4 -rw------- 1 ops01 ops01 145 Jul 24 09:55 /home/ops01/.bash_history
    818813 0 drwxrws--- 3 root ops_group 121 Jul 20 10:48 /data
    820160 4 -rw-r--r-- 1 root ops_group 5 Jul 24 09:14 /data/root.log
    820161 4 -rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 /data/ops01.log
    820162 4 -rw-rw-r-- 1 ops02 ops_group 6 Jul 24 09:15 /data/ops02.log
    818814 0 drwxrwsr-x 2 ops02 ops_group 6 Jul 24 09:21 /data/test
    820215 0 -rw-r--r-- 1 root ops_group 0 Jul 20 10:48 /data/file-20.log

    #没有属主

    [root@jindada ~]# find / -nouser -ls
    201729427 0 -rw-rw---- 1 666 mail 0 Jul 21 16:47 /var/spool/mail/user02
    201685422 0 -rw-rw---- 1 6666 mail 0 Jul 21 16:40 /var/spool/mail/user123

    #没有属组的

    [root@jindada ~]# find / -nogroup -ls
    134355712 0 -rw------- 1 root 1013 0 Jul 22 11:11 /var/db/sudo/lectured/qiudao


    #没有属主也没有属组的

    [root@jindada ~]# userdel ops02
    [root@jindada ~]# ll data/file-26.txt
    67255910 0 -rwxr--r-- 1 1045 1047 0 Jul 26 00:00 /root/data/file-26.txt
    134356976 0 drwx------ 2 1045 1047 99 Jul 24 09:16 /home/ops02
    134356977 4 -rw-r--r-- 1 1045 1047 18 Oct 31 2018 /home/ops02/.bash_logout
    134356978 4 -rw-r--r-- 1 1045 1047 193 Oct 31 2018 /home/ops02/.bash_profile
    134356979 4 -rw-r--r-- 1 1045 1047 231 Oct 31 2018 /home/ops02/.bashrc
    134356980 4 -rw------- 1 1045 1047 276 Jul 24 09:49 /home/ops02/.bash_history
    134356968 4 -rw------- 1 1045 1047 637 Jul 24 09:16 /home/ops02/.viminfo
    818815 0 -rw-rw-r-- 1 1045 1047 0 Jul 24 09:11 /data/ops02.txt

    [root@jindada ~]# find / ( -nouser -o -nogroup ) -ls
    67255910 0 -rwxr--r-- 1 1045 1047 0 Jul 26 00:00 /root/data/file-26.txt
    134355712 0 -rw------- 1 root 1013 0 Jul 22 11:11 /var/db/sudo/lectured/qiudao
    201729427 0 -rw-rw---- 1 666 mail 0 Jul 21 16:47 /var/spool/mail/user02
    201685422 0 -rw-rw---- 1 6666 mail 0 Jul 21 16:40 /var/spool/mail/user123
    201696843 0 -rw-rw---- 1 1045 mail 0 Jul 24 09:08 /var/spool/mail/ops02
    134356976 0 drwx------ 2 1045 1047 99 Jul 24 09:16 /home/ops02
    134356977 4 -rw-r--r-- 1 1045 1047 18 Oct 31 2018 /home/ops02/.bash_logout
    134356978 4 -rw-r--r-- 1 1045 1047 193 Oct 31 2018 /home/ops02/.bash_profile
    134356979 4 -rw-r--r-- 1 1045 1047 231 Oct 31 2018 /home/ops02/.bashrc
    134356980 4 -rw------- 1 1045 1047 276 Jul 24 09:49 /home/ops02/.bash_history
    134356968 4 -rw------- 1 1045 1047 637 Jul 24 09:16 /home/ops02/.viminfo
    818815 0 -rw-rw-r-- 1 1045 1047 0 Jul 24 09:11 /data/ops02.txt
    820162 4 -rw-rw-r-- 1 1045 ops_group 6 Jul 24 09:15 /data/ops02.log
    818814 0 drwxrwsr-x 2 1045 ops_group 6 Jul 24 09:21 /data/test

    八、根据目录层级查找

    选项:

    -maxdepth #最大的目录层级 tree -L


    [root@jindada ~]# find / -maxdepth 2 ( -nouser -o -nogroup ) -ls
    134356976 0 drwx------ 2 1045 1047 99 Jul 24 09:16 /home/ops02
    818815 0 -rw-rw-r-- 1 1045 1047 0 Jul 24 09:11 /data/ops02.txt
    820162 4 -rw-rw-r-- 1 1045 ops_group 6 Jul 24 09:15 /data/ops02.log
    818814 0 drwxrwsr-x 2 1045 ops_group 6 Jul 24 09:21 /data/test
    [root@jindada ~]# find / -maxdepth 3 ( -nouser -o -nogroup ) -ls
    67255910 0 -rwxr--r-- 1 1045 1047 0 Jul 26 00:00 /root/data/file-26.txt
    134356976 0 drwx------ 2 1045 1047 99 Jul 24 09:16 /home/ops02
    134356977 4 -rw-r--r-- 1 1045 1047 18 Oct 31 2018 /home/ops02/.bash_logout
    134356978 4 -rw-r--r-- 1 1045 1047 193 Oct 31 2018 /home/ops02/.bash_profile
    134356979 4 -rw-r--r-- 1 1045 1047 231 Oct 31 2018 /home/ops02/.bashrc
    134356980 4 -rw------- 1 1045 1047 276 Jul 24 09:49 /home/ops02/.bash_history
    134356968 4 -rw------- 1 1045 1047 637 Jul 24 09:16 /home/ops02/.viminfo
    818815 0 -rw-rw-r-- 1 1045 1047 0 Jul 24 09:11 /data/ops02.txt
    820162 4 -rw-rw-r-- 1 1045 ops_group 6 Jul 24 09:15 /data/ops02.log
    818814 0 drwxrwsr-x 2 1045 ops_group 6 Jul 24 09:21 /data/test

     

    九、find的执行动作

    -print #默认的动作 打印你所查找出来的文件的名称


    -ls #把查找出来的文件以长格形式显示出来文件的详细信息


    -delete #把查找出来的文件进行删除 只能删除空目录


    -exec #后面加自定义的shell命令

     

    [root@jindada ~]# find / -maxdepth 2 ( -nouser -o -nogroup )
    /home/ops02
    /data/ops02.txt
    /data/ops02.log
    /data/test
    [root@jindada ~]# find / -maxdepth 2 ( -nouser -o -nogroup ) -print
    /home/ops02
    /data/ops02.txt
    /data/ops02.log
    /data/test


    [root@jindada ~]# find / -maxdepth 2 ( -nouser -o -nogroup ) -ls
    134356976 0 drwx------ 2 1045 1047 99 Jul 24 09:16 /home/ops02
    818815 0 -rw-rw-r-- 1 1045 1047 0 Jul 24 09:11 /data/ops02.txt
    820162 4 -rw-rw-r-- 1 1045 ops_group 6 Jul 24 09:15 /data/ops02.log
    818814 0 drwxrwsr-x 2 1045 ops_group 6 Jul 24 09:21 /data/test

     

    [root@jindada ~]# find /opt/ -type d -name "opt"
    /opt/
    [root@jindada ~]# ll /opt/
    total 0
    [root@jindada ~]# cp /etc/hosts /opt/
    [root@jindada ~]# find /opt/ -type d -name "opt" -delete
    find: cannot delete ‘/opt/’: Directory not empty
    [root@jindada ~]# ll /opt/
    total 4
    -rw-r--r-- 1 root root 158 Jul 27 12:11 hosts

    [root@jindada ~]# find /opt/ -type f -name "hosts" -delete
    [root@jindada ~]# ll /opt/
    total 0
    [root@jindada ~]# find /opt/ -type d -name "opt" -delete


    [root@jindada ~]# find /root/data/ -type f
    /root/data/file-24.txt
    /root/data/file-25.txt
    /root/data/file-26.txt
    /root/data/file-27.txt
    [root@jindada ~]# find /root/data/ -type f -delete
    [root@jindada ~]# ll data/
    total 0

    #把某个目录下七天以前的数据删除

    [root@jindada ~]# find /backup -type f -mtime +7 -delete


    [root@jindada ~]# find /var/log/ -type f -name "*.log" -exec cp {} /opt/ ;
    [root@jindada ~]# ll /opt/
    total 9076
    -rw-r--r-- 1 root root 0 Jul 27 12:17 access.log
    -rw------- 1 root root 26591 Jul 27 12:17 anaconda.log
    -rw------- 1 root root 1485709 Jul 27 12:17 audit.log
    -rw------- 1 root root 0 Jul 27 12:17 boot.log
    -rw-r--r-- 1 root root 0 Jul 27 12:17 error.log
    -rw------- 1 root root 4017 Jul 27 12:17 ifcfg.log
    -rw------- 1 root root 1552657 Jul 27 12:17 journal.log
    -rw------- 1 root root 0 Jul 27 12:17 ks-script-3PCKae.log
    -rw------- 1 root root 110647 Jul 27 12:17 packaging.log
    -rw------- 1 root root 29721 Jul 27 12:17 program.log
    -rw------- 1 root root 124184 Jul 27 12:17 storage.log
    -rw-r--r-- 1 root root 5840292 Jul 27 12:17 test.log

     

    十、find和xargs命令的配合使用

    [root@jindada ~]# find /var/log/ -type f -name "*.log" | xargs cp -t /opt/a
    [root@jindada ~]# ll /opt/a
    total 9076
    -rw-r--r-- 1 root root 0 Jul 27 12:22 access.log
    -rw------- 1 root root 26591 Jul 27 12:22 anaconda.log
    -rw------- 1 root root 1485709 Jul 27 12:22 audit.log
    -rw------- 1 root root 0 Jul 27 12:22 boot.log
    -rw-r--r-- 1 root root 0 Jul 27 12:22 error.log
    -rw------- 1 root root 4017 Jul 27 12:22 ifcfg.log
    -rw------- 1 root root 1552657 Jul 27 12:22 journal.log


    [root@jindada ~]# find /var/log/ -type f -name "*.log" | xargs -I {} cp {} /opt/b
    [root@jindada ~]# ll /opt/b
    total 9076
    -rw-r--r-- 1 root root 0 Jul 27 12:23 access.log
    -rw------- 1 root root 26591 Jul 27 12:23 anaconda.log
    -rw------- 1 root root 1485709 Jul 27 12:23 audit.log
    -rw------- 1 root root 0 Jul 27 12:23 boot.log
    -rw-r--r-- 1 root root 0 Jul 27 12:23 error.log
    -rw------- 1 root root 4017 Jul 27 12:23 ifcfg.log


    [root@jindada ~]# cp `find /var/log/ -type f -name "*.log"` /opt/c
    [root@jindada ~]# ll /opt/c
    total 9076
    -rw-r--r-- 1 root root 0 Jul 27 12:24 access.log
    -rw------- 1 root root 26591 Jul 27 12:24 anaconda.log
    -rw------- 1 root root 1485709 Jul 27 12:24 audit.log
    -rw------- 1 root root 0 Jul 27 12:24 boot.log
    -rw-r--r-- 1 root root 0 Jul 27 12:24 error.log
    -rw------- 1 root root 4017 Jul 27 12:24 ifcfg.log
    -rw------- 1 root root 1552657 Jul 27 12:24 journal.log


    [root@jindada ~]# cp $(find /var/log/ -type f -name "*.log") /opt/c


    $() == `` #优先执行里面的命令 把命令执行的结果交给外面的命令

     

    [root@jindada ~]# find /var/log/ -type f -name "*.log" |xargs ls -l
    -rw-------. 1 root root 26591 Jul 6 02:17 /var/log/anaconda/anaconda.log
    -rw-------. 1 root root 4017 Jul 6 02:17 /var/log/anaconda/ifcfg.log
    -rw-------. 1 root root 1552657 Jul 6 02:17 /var/log/anaconda/journal.log
    -rw-------. 1 root root 0 Jul 6 02:17 /var/log/anaconda/ks-script-3PCKae.log
    -rw-------. 1 root root 110647 Jul 6 02:17 /var/log/anaconda/packaging.log
    -rw-------. 1 root root 29721 Jul 6 02:17 /var/log/anaconda/program.log

     

    [root@jindada ~]# find /opt/a -type f -name "*.log" |xargs rm -f
    [root@jindada ~]# ll /opt/a
    total 0


    场景1:服务器磁盘满,一般由大的日志文件导致,需找到大文件并删除。

    解决1: find / -size +500M -print0|xargs -0 du -m|sort -nr
    find指令为找出500M以上的文件,print0和xargs -0配合使用,用来解决文件名中有空格或特殊字符问题。du -m是查看这些文件的大小,并以m为单位显示。最后sort -nr是按照数字反向排序(大的文件在前)
    解决2:上述方法从根路径查找,可能列出一些系统文件。可以在这个查找之前先进行一下过滤。
    使用du -m -d 1 /|sort -nr 先看看根路径下,哪个文件夹比较大,并且有嫌疑是导致磁盘满的罪魁祸首。然后再基于那个目录进行find。

     

    场景2: 记得写过一个xxx.c的文件,但是忘了放哪里了
    解决: find / -name *xxx*.c 模糊查找下这个文件

  • 相关阅读:
    java数据库编程之DAO模式
    java数据库编程之JDBC
    java数据库编程之初始Mysql
    java数据库编程之常用的操作用户和赋权限
    java数据库编程之事务、视图、索引、备份、恢复
    java数据库编程之嵌套子查询及exists的使用
    .net窗体程序的基础知识及详细笔记
    sql sever 基础知识及详细笔记
    java基础知识及详细笔记
    计算机基础知识及笔记
  • 原文地址:https://www.cnblogs.com/jhno1/p/13391361.html
Copyright © 2011-2022 走看看