shell编程之文件检索find

find 命令是用来搜索指定目录下面符合搜索选项的文件.它跟 awk, sed, grep 的区别是它搜索到的对象是文件,而后三者是文件里的字符或字符串.

简介

Linux 中 find 命令是用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

用法

  • 命令格式

    find path -option
    
  • 参数说明

    • -name 'pattern' 根据名称来查找
    • -user 'pattern' 根据所属用户
    • -size n 根据文件大小
    • -type [fdbl] 根据文件类型
    • -empty 是否时空文件
    • -exec command {} \; 对查找到的文件进一步命令处理
    • -mtime n 根据文件内容修改时间(单位是天)
    • -ctime n 根据文件属性改变[chmod]时间(单位时天)
    • -atime n 根据文件访问[cat]时间(单位是天)

    注意:
    -mmin n/-cmin n/-amin n和上面三个区别是单位是分钟
    对于n,n是指正好n天前的当天,+n是指所有n天前,-n是指所有n天内

案例

  • 查找 _posts/ 目录下面文件名包含 shell 字符串的文件

    find _posts/ -name '*shell*'
    

    shell

  • 查找 _posts/ 目录下面文件名包含 shell 字符串的文件,并统计每个文件有多少行

    find _posts/ -name '*shell*' -exec wc -l {} \;
    

    findwc

  • 查询 _posts/ 目录下面文件大小大于 3k 的文件

    find _posts/ -size +3k
    

    10k

  • 下面根据文件内容修改时间(单位是分钟)进行查找
    目前 _posts 中的文件显示如下,以时间先后排序,其中 swp 的文件的修改时间为 7 月 1 号 18:12,而原文件是 17:59,其他的都是 6 月 30 号的文件.
    shell

    • 查询 19 分钟之前那一分中哪些文件被修改了

      find _posts/ -mmin 19
      

      19

    • 查询前 19 分钟之前所有被修改了的文件

      find _posts/ -mmin +19
      

      +19

    • 查询前 19 分钟以内所有被修改了的文件

      find _posts/ -mmin -19
      

      -19

参考文献

  1. 维基百科find
  2. find源码

如果该文章对您产生了帮助,或者您对技术文章感兴趣,可以关注微信公众号: 技术茶话会, 能够第一时间收到相关的技术文章,谢谢!

技术茶话会

本篇文章由一文多发平台ArtiPub自动发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值