find 命令

find 命令功能强大,能根据各种关键字段进行文件的搜索.
find 是直接查找硬盘,所以相较查找数据库的 wherelocate 而言,速度较慢

命令格式:find [PATH] [option-1] [option-2] [action]
可以根据多种条件一起来进行筛选,取交集

1. 按时间进行查找

  • 选项
    • -atime n:查找 n 【天】之前【被读取】的文档
    • -mtime n:查找 n 【天】之前【内容变更】的文档
    • -ctime n:查找 n 【天】之前【inode 内容变更】的文档
    • -mmin n:查找 n 【分钟】之前【内容变更】的文档
    • -newer : mtime 比某个文件新的文档
find 按时间进行文件查找时,时间是可以带正负号或不带符号的,而且含义各不相同
  • 例子
    • 找出一天内被改动过的文件:find / -mtime 0
    • 找出四天内被改动过的文件:find / -mtime -4
    • 找出四天前的那一天被改动过的文件:find / -mtime 4
    • 找出比 /etc/passwd 新的文件:find / -newer /etc/passwd

2. 按名称、大小、类型进行查找

  • 选项

    • -name < FILENAME>:查找名为 的文件(支持通配符,但要加单引号)
    • -size [+-]:查找 [大于/小于] 的文件,可加单位
      • c:byte
      • k:KB
      • M:MB
      • G:GB
    • -type :查找属于 类型的文件
      • f:普通文件
      • b:存储设备
      • c:字符型设备
      • d:目录
      • l:链接文件
      • s:Socket 文件
      • p:FIFO 文件
  • 例子

    • 查找叫做 passwd 的文件:find / -name passwd
    • 查找文件名包含 bash 的文件:`find /root/ -name 'bash'
    • 查找大于50MB的文件:find /root/ -size +50M
    • 查找链接文件:find /root/ -type l

3. 按所有者、所属组进行查找

  • 选项

    • -user :查找属于用户的文件
    • -group :查找属于群组的文件
    • -uid :查找 owner 的 UID 为 的文件
    • -gid :查找 group 的 GID 为 的文件
    • -nouser:查找 owner 不在/etc/passwd中的文件
    • -nogroup:查找 group 不在/etc/group中的文件
  • 例子

    • 查找 /home 下属于 choco 的文件:find /home -user choco
    • 查找 /home 下,且 owner 的 UID 为 1002 的文件:find /home -uid 1002
    • 查找 owner 不在 /etc/passwd 中的文件:find / -nouser

4. 按权限进行查找

  • 选项
    • -perm :查找权限正好
      等于 的文件
    • -perm -:查找权限包含 的文件
    • -perm +:查找权限被 包含的文件
      ps. 这里的加减号不太好理解,跟直面的含义相反。可以记忆:加号代表 Any,减号代表 All
  • 例子
    • 查找包含 SUID 或 SGID 或 SBIT 权限的文件:find / -perm +7000
    • 查找包含 SUID 或 SGID 权限的文件:find / -perm +6000
    • 查找权限大于 4755 的文件:find / -perm -4755

5. 查找完的动作

  • 选项
    • -exec :使用命令 来处理查找到的结果(不支持 alias)
  • 例子
    • 查找 /root/ 下文件名包含 bash 的文件,并 ls 以列表模式显示出来:
find  /root/  -name  '*bash*'  -exec  ls  -l  {}  \;
## {}代表找到的结果
## 以分号结尾,但在 bash 环境下分好有特殊含义,所以用反斜杠转义

你可能感兴趣的:(find 命令)