zoukankan      html  css  js  c++  java
  • day06(find命令 name/size/type)

    一:find名称查找

    单一查找某个文件的位置,可以用 which 文件名(不需要引号)

    [root@local-work ~]# which ifconfig
    /usr/sbin/ifconfig

    在目录层级结构中搜索文件;find命令可以根据名称,属性,创建时间,大小,所属用户等方式查找文件。格式:

    find 搜索路径 参数 参数相关匹配值  指令(-print)   #指令默认不用写

    1.find名称查找格式   find  -name

    格式:
    find  搜索路径 -name 参数相关匹配值 指令(-print)
    
    find /test -name '2.txt'
    结果是路径:/test/t1/t2/2.txt

    2.通配符   *

    *    匹配所有
    例子:
    (1)以.txt结尾的,以*代替前面,或者可以放在结尾寻找前面知道的
    [root@local-work test]# find /test -name '*.txt'
    /test/t1/t2/3.txt
    /test/t1/t2/2.txt
    
    (2)包含某些字符的
    find /test -name *.txt*

    二:find名称查找中括号的用法 [ ]

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

    find /root/ -name '[1,3,5]abc'
    find /root/ -name '[135]abc'
    结果: /root/1abc /root/3abc /root/5abc

    三:find名称查找中括号取反(只对中括号内的取反)

    ^(shift+6打出来)  :匹配去掉中括号内的内容之外的跟前面或者后面匹配上的文件,对名称表达式取反

    例子:查找/root 下有abc的且除了1,3,5abc
    [root@local-work /]# find /root -name  '[^135]abc'
    /root/2abc /root/4abc /root/6abc /root/7abc /root/8abc /root/9abc 其中: [root@local-work /]# find /root -name 'abc[135^]' 都是错误的 [root@local-work /]# find /root -name 'abc[^135]' 都是错误的

    四:find结果集取反

    ! 对整个查找结果取反

    find /root ! -name '[123]abc'  #  !加在查找的路径后面,是对整个find的结果然后取反,而^是对中括号内的结果取反的

    五:find匹配任意一个字符

    (1)* 匹配任意的所有的字符,不管匹配字符前面或者后面是什么,都匹配出来

    [root@local-work /]# find /root -name '*abc'
    /root/1abc
    /root/2abc
    /root/3abc
    /root/4abc
    /root/5abc
    /root/6abc
    /root/7abc
    /root/8abc
    /root/9abc

    (2)? 只匹配一个字符的文件或者内容,其他的(字符为0个或者大于1个的)不匹配

    例子:
    [root@local-work /]# touch /root {10..20}abc
    [root@local-work /]# find /root -name '?abc'
    /root/1abc
    /root/2abc
    /root/3abc
    /root/4abc
    /root/5abc
    /root/6abc
    /root/7abc
    /root/8abc
    /root/9abc       #结果只显示abc前面是一个字符的内容

    六: -i 忽略大小写查找

    [root@local-work ~]# touch /root {1..9}Abc       #在家目录下创建1~9Abc

    [root@local-work ~]# find /root -iname '*abc'     

    # 忽略大小写,把后面是abc的前面是所有的,abc不区分大小写

    七:按照文件体积大小查找

    ls -lh 查找文件以长列表形式,并显示文件的大小(显示多少k等)

    ./ 当前的目录(点+斜杠)

    根据文件大小查找,默认后面跟c(字节),格式是:

    find 需要查询的路径 -size 参数(n)   #参数n必须为整型int
    (1)+n
    [root@local-work ~]# find /root/ -size +1k
    (2)-n
    [root@local-work ~]# find /root -size -10003)n
    [root@local-work ~]# find /root -size 1
    #不精确(find会自动四舍五入,但是不是真的四舍五入,比如2.1就是3,2.5也是3)

    (4)参数补充

    -a 并且(and

    例子:

    [root@local-work ~]# find /var/log/ -size +10k -a -size -20k

    find会同时打印隐藏的文件

    但是 -a可以省略,在输入的时候可以不尽兴输入,也可以达到这个结果

    [root@local-work ~]# find /var/log/ -size +10k -size -20k

     -o 或者(or

    例子:

    查找大小小于10k或者大于20k的文件

    [root@local-work ~]# find /var/log/ -size -10k -o -size +20k

    -o不可以省略

    八:按照时间来查找

    按照文件的创建时间,修改时间,访问时间,进行筛选

    1)查找已知文件的相关时间

    [root@local-work ~]# stat test.txt

      File: ‘test.txt’

      Size: 1017       Blocks: 8          IO Block: 4096   regular file

    Device: fd00h/64768d Inode: 33786023    Links: 1

    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

    Access: 2021-03-08 21:16:14.982729843 +0800

    Modify: 2021-03-08 21:16:14.982729843 +0800

    Change: 2021-03-08 21:16:14.982729843 +0800

     Birth: -

    2find查询时间的参数

    -ctime :根据文件变更时间进行查找时间进行查找
    -mtime:根据文件修改的天数来查找  vim
    -atime:根据访问时间查找         cat
    格式:find 路径 -time 数字
    注意事项:数字必须为整型,+3是代表查询今天算三天前的所有文件,-3是三天内的所有,3则是刚好3天的
    例子:
    find /var/log/ -mtime 3

    九:按照文件类型查找   type

    1.文件类型

    f(-):普通文件
    d      :目录文件
    l       :链接文件(快捷方式)
    b      :设备文件
    c      :设备文件
    s      :套接字文件
    p      :管道文件

    2.按类型查找文件  -type

    ./   也就是/root/

    格式:
    find 路径 -type 文件类型 
    [root@local-work ~]# find ./ -type d -ls
    结果是:
    33574977    4 dr-xr-x---   3 root     root         4096 Mar 11 20:08 ./
    51314599    0 drwxr-----   3 root     root           19 Mar  4 06:02 ./.pki
      1003    0 drwxr-----   2 root     root            6 Mar  4 06:02 ./.pki/nssdb
    
    备注:
    ./ 就是/root ,d是目录文件
    普通文件-,就使用f表示
    例题:查找普通文件中创建时间在三天以内的
    find ./ -type f -a -ctime -3

    十:find指令集

    1.  -print打印结果集

    find ./ -type s -ctime -3  -print

    2. -ls打印结果集详情

    find  ./ -type s -ctime -3 -ls

    3. -delete 删除结果集

    删除./中的名字中只有一个数字的文件
    [root@local-work ~]# find ./ -name '?abc' -delete

    4. -exec 对结果集进行下一步的处理

    格式:
    find 路径 参数  参数表达式  -exec 结果集的命令 {}  ;
    
    例子:查找./中按照名字查找不区分大小写,abc前面只有一个数字的;然后查询出来
    [root@local-work ~]# find ./ -iname '?abc' -exec ls {} ;
    
    备注:
    -exec 是固定的格式
    {} 是exec把前面的结果集放在这里了
     和;   都是固定的格式

    5.  -ok 对结果集进行下一步的处理(交互式:需要进行确认才可以)

    格式:
    find 路径 参数 参数表达式 -ok 操作ok的命令 {};
    
    例子:
    [root@local-work ~]# find ./ -name 'test.txt' -ok rm {} ;

    十一:find和xargs命令

    1.管道符号  |

    作用是:把前面结果的命令交给后面来处理

    2.find和xargs命令

    格式:
    find 路径 参数 参数表达式 | xargs ....(其他命令做处理)
    
    例子:
    find ./test/ -type f | xargs -I {} ls -l {}

    习题总结:

    查询/root中的目录文件 复制到/tmp
    [root@local-work ~]# find /root/ -type d -exec cp -rfv {} /tmp ;
    备注:
    r递归复制,f不提示(免交互),v显示过程

    取消正在输入的命令,删除掉

    crl+c

    ctrl+u

  • 相关阅读:
    Mybatis配置文件
    maven添加镜像与常用配置
    互联网级微服务架构神器Duubo
    Mybatis入门
    SpringMVC文件下载与JSON格式
    SpringMVC拦截器与异常处理
    SpringMVC国际化与文件上传
    cinder
    horizon
    glance
  • 原文地址:https://www.cnblogs.com/dayday-up-a/p/14509058.html
Copyright © 2011-2022 走看看