Find命令详解

CLI

find 命令

find是Linux系统常用命令之一,可以方便快速的从系统中检索出文件

使用格式:find [指定查找目录] [查找规则] [查找完成后执行的action]

例如:

find  /etc /tmp /root -name passwd

查找/etc /tmp /root 目录下名为passwd的文件

  • 按文件名查找:

    -name 根据文件名查找(精确查找)

    -iname 根据文件名查找,但不区分大小写
    支持通配符

    *表示通配任意的字符

    ? 表示通配单个字符

    [] 表示通配括号里的任意一个字符

    find /tmp -name "[ab].sh"
    
  • 根据文件所属用户组来查找文件

    -user 根据属主来查找

    -group 根据属组来查找

    -nouser 没有属主

    -nogroup 没有属组

  • 根据uid和gid来查找

    find /tmp -uid 500 //查找uid是500的文件  
    find /tmp -gid 1000 //查找gid是1000的文件
    
  • -a -o -not的使用

    -a连接两个不同的条件

    find /tmp -name "*.sh" -a -user root
    

    -o则是or -not是对条件取反

  • 根据时间戳来查找

    find /tmp -atime +5 //查找五天内没有访问过的文件  
    find /tmp -atime -5 //查找五天内访问过的文件
    

    另外支持mtime内容修改时间 ctime属性修改时间,支持单位min/time 分钟/天

  • 根据类型查找

    -type

    f // 普通文件
    d //目录文件
    l //链接文件
    b //块设备文件
    c //字符设备文件
    p //管道文件
    s //socket文件

  • 根据大小查找

    -size

    find /temp -size +2M
    

    支持+ - 大于/小于

  • 根据文件权限查找

    -perm

    find /tmp -perm 755   //查找/tmp目录下权限是755的文件
    
  • 查找完成后执行的action

    -print 默认情况下的动作

    -ls 查找到后用ls 显示出来

    -ok [commend] 查找后执行命令的时候询问用户是否要执行

    -exec [commend] 查找后执行命令的时候不询问用户,直接执行

    find /tmp -name "*.sh"  -exec chmod u+x {} \;  
    find /tmp -name "*.sh" -exec cp {} {}.old \;    //复制tmp目录下的.sh文件重命名为xx.old  
    find /tmp -atime +30 -exec rm -rf {} \;   //删除查找到的30天以上没访问的文件
    

    注: {}表示查找到的文件

  • 使用xargs来对查找到的文件进行进一步操作

    find /tmp -name "*.old"|xargs chmod 700 //将找到的*.old文件权限修改为700
    

以上~

坚持原创技术分享,您的支持将鼓励我继续创作!