• shell命令find


    概述

    find命令的工作方式:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。

    选项

    -print:指明打印出匹配文件的文件名(路径)。当使用-print时,' '作为用于分隔文件的定界符

     

    -print0:指明使用''作为定界符来打印每一个匹配的文件名。当文件名中包含换行符时,这个方法就有用武之地了

     

    -name:指定文件名所必须匹配的字符串。支持通配符

    find /home/dd -name "*.txt" -print

    -iname:-name忽略大小写

    -path:匹配路径,支持通配符

    find . -path "*www*"

    -perm:指定权限

    -regex:使用正则表达式来匹配文件

    find . -regex ".*(.py|.sh)$"

     

    -iregex:-regex忽略大小写

     

    -maxdepth:指定查找最大深度目录

    find . -maxdepth 1 -type f -print

     

    -mindepth:指定从第几深度目录开始查找

     

    运算符:

    ( expr ):Force precedence.

    expr1 expr2

    Two expressions in a row are taken to be joined with an implied "and"; expr2 is not evaluated if expr1 is false. 

    find . -name '1.txt' -type f -user 'pdd'

    ! expr:逻辑非

    find ! -name 'tmp'

    expr1 -a expr2:逻辑与,默认选项

      Same as expr1 expr2.

    expr1 -o expr2:逻辑或

      Or; expr2 is not evaluated if expr1 is true.

    find . ( -name "*.txt" -o "*.pdf" ) -print

     

    -type: 指定查找文件的类型

    b 块设备

    c 字符设备

    d 目录

    f 普通文件

    l 符号链接

    p FIFO

    s 套接字

     

    根据文件时间进行搜索(-{a,m,c}time以天为计量单位,-{a,m,c}min以分钟为计量单位)

    访问时间(-atime,-amin):用户最近一次访问文件的时间

    修改时间(-mtime,-mtime):文件内容最后一次被修改的时间

    变化时间(-ctime,-cmin):文件元数据(metadata,例如权限或所有权)最后一次改变的时间

    find . -type f -atime -7 -print  # 最近七天内被访问过的文件
    find . -type f -atime 7 -print  # 恰好七天前被访问过的文件
    find . -type f -atime +7 -print  # 访问时间超过七天的文件

    -size:根据文件的大小进行搜索

    b 块(512字节 default)

    c 字节

    w 字(2字节)

    k 千字节

    M 兆字节

    G 吉字节

    find . -type f -size +2k  # 大于2KB的文件
    find . -type f -size -2k  # 小于2KB的文件
    find . -type f -size 2k  # 等于2KB的文件

    -delete:删除查找到的匹配文件

    -user(可以是用户名或UID):查找特定用户所拥有的文件

     

    -exec command {} ;:与其他命令进行结合

    find . -type f -user root -exec chown www {} ;

    在这个命令中,{}是一个特殊的字符串,与-exec选项结合使用。对每一个匹配的文件,{}会变替换成相应的文件名。例如,上述命令找到两个文件test1.txt和test2.txt,它最终会被解析位chown www test1.txt和chown www test2.txt

     

    -prune:跳过指定的目录

    find . -path ./pdd -prune -o -print
    find / -path /data -prune -o -size +10M -type f # 打印/data目录以外体积大于10M的文件
  • 相关阅读:
    使用logstash迁移elasticsearch
    cratedb 4.2.1单机安装
    es6.8.5集群部署(使用x-pack ssl方式)
    es从6.5升级到6.8(单节点)
    elasticsearch-6.8.5单机部署(当生产环境使用)
    mysql_upgrade升级(主从模式,先升级从库)
    mysql_upgrade升级(直接本地升级)
    主从数据不一致导出同步错误(从库记录存在导致写入报主键重复)
    12C下使用logminer
    mysql主库磁盘空间爆满导致从库错误
  • 原文地址:https://www.cnblogs.com/metasequoia/p/5968315.html
Copyright © 2020-2023  润新知