linux find文件查找命令

概述

find命令 支持实时查找,精确匹配,通过遍历指定目录中的所有文件完成查找,速度慢,但支持众多查找标准

locate命令

讲find命令之前,先介绍类似的文件查找命令 locate

  • locate 非实时,模糊匹配,全文件系统查找命令,根据全系统文件数据库进行查找,其数据存在/var/lib/mlocate/mlocate.db
  • updatadb 手动生成文件数据库。updatedb is usually run daily by cron(8) to update the default database.

find命令

search for files in a directory hierarchy
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point…] [expression]
使用:find 查找路径 查找标准 查找后的处理运作

  • 查找路径 默认为当前目录
  • 查找标准 默认为指定路径下的所有文件
  • 处理运作 默认为显示

匹配标准

  • -name ‘FILENAME’ 精确查找
  • -iname ‘FILENAME’ 不区分大小写匹配查找
  • -regex PATTERN 根据正则表达式进行文件名匹配
  • -user USERNAME 根据属主查找
  • -group GROUPNAME 根据属组查找
  • -uid/gid
  • -nouser 没有属主的文件
  • -type 根据文件类型
  • -size 根据文件大小
  • 根据时间戳
  • -perm 根据文件权限

Tip1 find 常通过文件通配符查找文件,用正则表达式较少

  • *匹配任意长度的任意字符
  • ? 任意单个字符
  • [ ]指定范围内的单个字符

Tip2 若一个用户删除,但是此前用户创建的文件不会删除,那么其属主是谁?
其文件的属主是其原用户的id号

Tip3 -type 文件类型

  • f 普通文件
  • d 目录
  • c 字符文件
  • l 链接文件
  • p 管道文件
  • s 套接字文件

Tip4 -size 文件大小

  • [+|-]#M
  • [+|-]#G
  • [+|-]#k
  • +大于 -小于 不添加 精确

Tip5 文件时间戳查找

  • -mtime [+|-]# 最近一次修改时间,默认天

  • -ctime [+|-]# 最近一次改变时间

  • -atime [+|-]# 最近一次访问时间

  • -mmin [+|-]# 默认分

  • -cmin [+|-]#

  • -amin [+|-]#

Tip6 -perm MODE
/MODE 内部有一个满足 -MODE 同时满足

find ./  -perm -001  查找其他用户有执行文件的文件
find ./ -perm -007 查找其他用户有读写执行权限的文件

执行动作 action

  • -print 显示
  • -ls 类似ls -l
  • -ok COMMAND {} ; (;表示结尾标志 {} 文件占位符) 每个操作都要用户确认
  • -exec COMMAND {} ; 区别 -ok 每个操作都不需要用户确认
find ./ -perm  -006 -exec chmod o-w {} \;  查找其他用户有写权限的文件,并将其他用户写权限去掉
find ./ -type d -ok chmod +x {} \; 查找普通文件,将其增加写权限
find ./ -perm -020 -exec mv {} {}.new \; 将组用户有写权限和执行权限的文件,重命名为xxx.new
find /home -name "*.sh" -a -perm -111 -exec chmod o-x {} \;

练习

1.查找/var 目录下属主为root并且属组为mail的所有文件
find /var -user root -group mail
2.查找/tmp目录下不属于root,bin或者student的文件
find /tmp -not -user root -a -user bin -a student
3.查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件
find /tmp -mtime -7 -a -not -user root
4.查找当前系统上没有属主或属组且最近一天内曾被访问过的文件,并将其属组属主均修改为root
find / -nouser -nogroup -atime -1 -exec chown root:root {} ;
5.查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefile文件中
find /etc -size 1M -exec echo {} >>/tmp/etc.largerfile ;
find /etc -size 1M >> /tmp/etc.largerfile
6.查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息
find /etc -not -perm /222 -ls

Last

find 常搭配 xargs 命令 从标砖输入接收命令并执行的

find /etc -size +1M | xargs echo >> /tmp/etc.largerfile
find /etc -size +1M -exec echo {} >> /tmp/etc.largerfile
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值