• Linux(centos)系统find查找详解


    Find查找方式:

    可以通过不同的维度来精确定位到某个文件——

    文件名,类型,大小,时间...

    1. find名称关键字查找  -name

    小选项:i 忽略大小写

    格式:find 大体路径 -name “文件或目录名关键字”

    find 大体路径 -iname “文件或目录名关键字”

    例如:

    1.1.  

    [root@dazhu200 ~]# find /etc/ -name "rc.*"

    /etc/rc.d

    /etc/rc.d/rc.local

    /etc/rc.local

    [root@dazhu200 ~]#

    1.2.  

    [root@dazhu200 ~]# find ./ -iname "*u*"

    ./.bash_logout

    ./nu1

    ./number

    2. find 类型查找 -type

    小选项:f文件 d目录 l连接 b块设备 c字节设备 s网络套接字 p管道文件

    格式:find 大概路径 -type 小选项

    例:

    [root@dazhu200 ~]# find /dev -type b

    /dev/sr0

    /dev/sda3

    /dev/sda2

    /dev/sda1

    /dev/sda

    [root@dazhu200 ~]#

    3. find 大小查找 -size

    小选项:+ -

    -size +-and  -size -量 (取间隔)

    -and(并且,并集关系,默认为-a

    [root@dazhu200 ~]# find / -type f -size +100M -size -150M

    /usr/lib/locale/locale-archive

    [root@dazhu200 ~]# ll /usr/lib/locale/locale-archive

    -rw-r--r--. 1 root root 106070960 Jul 15 11:01 /usr/lib/locale/locale-archive

    4. find 时间查找

    以天为单位 

    -mtime(修改时间) -ctime(属性改变时间)  -atime(查看时间)

    以分钟为单位

    -mmin (修改时间)-cmin(属性改变时间)  -amin(查看时间)

    小选项:

    -number  n天之内

    +number n天之前

    number 第几天n天之前不包括第n天   第n天不包括今天n天之内包括今天

    格式:find 大概路径 -mtime 小选项

     [root@dazhu200 ~]# find ./ -mtime +2(不算当天过去两天之前的文件)

    ./.bash_logout

    ./.bash_profile

    ./.bashrc

    ./.cshrc

    ./.tcshrc

    [root@dazhu200 ~]#

    [root@dazhu200 ~]# find ./ -mtime -2(算上当天两天之内的内容)

    ./

    ./.bash_history

    ./nu1

    ./ok.txt

    ./err.txt

    ./nUmber

    ./.viminfo

    [root@dazhu200 ~]#

    [root@dazhu200 ~]# find ./ -mtime 2(过去第二天内容)

    ./.lesshst

    ./大柱英语

    ./nu2

    ./nu3

    [root@dazhu200 ~]#

    5. find 用户查找 -user

    选项:用户名

    格式:find 大概路径 -user name

    [root@dazhu200 ~]# find ./ -user root

    ./

    ./.bash_logout

    ./.bash_profile

    ./.bashrc

    ./.cshrc

    ./.tcshrc

    ./.bash_history

    ./.lesshst

    ./大柱英语

    ./nu1

    ./nu2

    6. find 属组查找 -group

    小选项:属组

    格式:find 大概路径 -group 属组

    [root@dazhu200 ~]# find ./ -group root

    ./

    ./.bash_logout

    ./.bash_profile

    ./.bashrc

    ./.cshrc

    ./.tcshrc

    ./.bash_history

    7. 按深度等级查找

    -maxdepth n

    [root@dazhu200 ~]# find ./ -maxdepth 1 -type f

    ./.bash_logout

    ./.bash_profile

    ./.bashrc

    ./.cshrc

    ./.tcshrc

    ./.bash_history

    8. inode查找,删除特殊符号名文件

    -inum

    小选项:inode

    33617260 -rw-r--r-- 2 root root 8332 Aug  4 21:52 大柱英语

    [root@dazhu200 ~]# find ./ -inum 33617252

    ./nu.zip.gz

    [root@dazhu200 ~]# find ./ -inum 33617260

    ./大柱英语

    [root@dazhu200 ~]#

    等特殊符号无法被删除时,使用find inum查找然后rm -rf `find...`删除。

    9. 组合

    且:-a(默认为-aand)  或:-oor)    无“选项”:-no”选项”

    9.1. 查找属主是dazhu且属组是root的文件:

    [root@dazhu200 ~]# find ./ -user dazhu -a -group root

    find: dazhuis not the name of a known user

    9.2. 查找属主是大柱或属组是root的文件:

    [root@dazhu200 ~]# find ./ -user 大柱 -o -group root

    find: ‘大柱’ is not the name of a known user

    9.3. 查找两天内且文件名为*n*”的文件:

    [root@dazhu200 ~]# find ./ -name "*n*" -a -mtime 2

    ./nu2

    ./nu3

    [root@dazhu200 ~]#

    10. 查找没有属组且没有属主的文件

    [root@dazhu200 ~]# find ./ -nouser -a -nogroup

    [root@dazhu200 ~]#

    11. find查找后的动作 

    11.1. -exec

    格式:find ... -exec 命令 {}

    命令:几乎所有命令都可执行但是find不支持别名

    [root@dazhu200 ~]# find ./ -type f -name "nu*" -exec cp {} /tmp ;

    [root@dazhu200 ~]# ll /tmp|grep “nu*”

    ls: cannot access nu*: No such file or directory

    /tmp:

    total 12

    -rw-r--r--  1 root root  57 Aug  3 10:25 nu1

    -rw-r--r--  1 root root  21 Aug  3 10:25 nu2

    -rw-r--r--  1 root root 123 Aug  3 10:25 nu3

    drwx------. 2 root root   6 Jul 27 08:29 vmware-root

    11.2. |xargs

    ...|xargs 后继命令(find不支持别名,所以rm慎用!)

    选项: -i {} 将上一条命令执行结果插入{}

    ...|xargs -i 后继命令 {} ... (将上调命令执行结果插入{}使用)

    [root@dazhu200 ~]# find ./ -type f -name "nu*"|xargs -i mv {} /tmp

    [root@dazhu200 ~]# ll

    total 20

    -rw-r--r-- 1 root root   36 Jul 31 20:45 err.txt

    -rw-r--r-- 1 root root    0 Jul 31 22:26 nUmber

    -rw-r--r-- 1 root root   57 Jul 31 20:53 ok.txt

    -rw-r--r-- 1 root root 8326 Jul 30 22:03 大柱英语

    [root@dazhu200 ~]# ll /tmp

    total 16

    -rw-r--r--  1 root root  57 Jul 31 20:43 nu1

    -rw-r--r--  1 root root  21 Jul 31 10:56 nu2

    -rw-r--r--  1 root root 123 Jul 31 11:01 nu3

    -rw-r--r--  1 root root 197 Aug  3 11:03 nu5

    drwx------. 2 root root   6 Jul 27 08:29 vmware-root

    选项:-t 默认t后直接借助上调命令执行结果

    ...|xargs cpmv -t..

    [root@dazhu200 ~]# find ./ -type f -name "nu*"|xargs cp -t /tmp

    [root@dazhu200 ~]# ll /tmp

    total 16

    -rw-r--r--  1 root root  57 Aug  3 20:43 nu1

    -rw-r--r--  1 root root  21 Aug  3 20:43 nu2

    -rw-r--r--  1 root root 123 Aug  3 20:43 nu3

    -rw-r--r--  1 root root 197 Aug  3 20:43 nu5

    drwx------. 2 root root   6 Jul 27 08:29 vmware-root

    [root@dazhu200 ~]#

    其他功能:进一步过滤与批量修改文件名

    find ./ -type f |xargs grep 文件名

     [root@dazhu200 ~]# find ./ -type f | grep nu*grep默认只过滤当前目录,递归过滤文件内容需要使用-R选项)

    nu5:-rw-r--r--  1 root root  57 Aug  3 10:40 nu1

    find ./ -type f |xargs -i cp {} {}.test

    [root@dazhu200 ~]# find ./ -type f |xargs -i cp {} {}.test

    [root@dazhu200 ~]# ll

    total 72

    -rw-r--r-- 1 root root   36 Jul 31 20:45 err.txt

    -rw-r--r-- 1 root root   36 Aug  3 21:18 err.txt.test

    -rw-r--r-- 1 root root   57 Jul 31 20:43 nu1

    -rw-r--r-- 1 root root   57 Aug  3 21:18 nu1.test

    -rw-r--r-- 1 root root   21 Jul 31 10:56 nu2

    -rw-r--r-- 1 root root   21 Aug  3 21:18 nu2.tes

    11.3. `可执行命令`

    [root@dazhu200 ~]# rm -rf `find /tmp/ -name "nu*"`

    [root@dazhu200 ~]# ll /tmp

    total 0

    drwx------. 2 root root 6 Jul 27 08:29 vmware-root

    [root@dazhu200 ~]#

    11.4. ;

    ;在命令行中有特殊含义。并列执行多条命令,不管其他命令是否可以成功执行,可以执行的都会执行。

    [root@dazhu200 ~]# ll;mkdir dazhu;touch dazhu/nu6

    total 36

    -rw-r--r-- 1 root root   36 Jul 31 20:45 err.txt

    -rw-r--r-- 1 root root   57 Jul 31 20:43 nu1

    -rw-r--r-- 1 root root   21 Jul 31 10:56 nu2

    [root@dazhu200 ~]# ll dazhu

    total 0

    -rw-r--r-- 1 root root 0 Aug  3 21:28 nu6

    11.5. &&

    && 串联多个命令,前边的无法成功执行后边的也就无法执行。

    [root@dazhu200 ~]# mkdir dazhu&&mkdir xiaozhu

    mkdir: cannot create directory ‘dazhu’: File exists

    [root@dazhu200 ~]# find ./ -type d -name "xiaozhu"

    [root@dazhu200 ~]#

    11.6. ||

    || 前边的命令执行失败,后面的命令才会执行

    [root@dazhu200 ~]# find ./ -type d -name "xiaozhu"

    [root@dazhu200 ~]# cd xiaozhu|| mkdir xiaozhu

    -bash: cd: xiaozhu: No such file or directory

    [root@dazhu200 ~]# ll

    drwxr-xr-x 2 root root    6 Aug  3 21:36 xiaozhu

    -rw-r--r-- 1 root root 8326 Jul 30 22:03 大柱英语

    [root@dazhu200 ~]# cd xiaozhu || mkdir xiaoming

    [root@dazhu200 xiaozhu]# which xiaoming

    /usr/bin/which: no xiaoming in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

    1.1.1. 待续...动作:

    u 直接跟命令选项:

    l -print (默认为-print

    l -ls 以长格式显示

    l -delete 删除文件但是仅能删除空目录

    l -ok 实现文件cp但是会提示是否cp

     -ok cp

    .....待续

    12. 待续...  ...

    1. #find /etc -type f | xargs grep “dazhu” --color=auto
    2. find 的逻辑运算符 -a 与 and(且) -o 或 or (和) ! 非 -not
    3. !取反
  • 相关阅读:
    GO语言并发
    NEERC2017:L
    bzoj2823[AHOI2012]信号塔
    bzoj1336[Balkan2002]Alien最小圆覆盖
    bzoj1069[SCOI2007]最大土地面积
    ACM2017Tsukuba:H
    ACM2015沈阳:B-Bazinga
    bzoj2724[Violet 6]蒲公英
    [bzoj4066]简单题
    [bzoj2125]最短路
  • 原文地址:https://www.cnblogs.com/dazhu-secure/p/13717462.html
Copyright © 2020-2023  润新知