开启辅助访问 切换到窄版

打印 上一主题 下一主题

编程小短文:find,让你随心所欲查找整块磁盘的任意文件

[复制链接]
作者:大女子阿花 
版块:
嵌入式操作系统 linux 发布时间:2020-5-27 05:52:53
12090
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
引言
我们都知道Linux操作系统,一般没有标配桌面窗口。使用 Bash 与操作系统对话。同时,Linux 操作系统,秉持了UNIX操作系统的“一切皆文件”的哲学思想,把各种类型的数据归纳为文件。
那么对于文件数量庞大的 Linux 系统如何快速高效的索引出我们需要查找的对象?这就体现出系统管理的效率水平。
今天我们给大家介绍这个指令——find。无论你是做系统管理或者编写 Bash 脚本文件,它都会是出现频次很高的那个。


用法
下面这个是基本的用法,根据文件名查找。
find -name index.php
还可以对文件名大小写不敏感进行筛选。
find -iname readme.txt
我们还可以根据文件类型进行筛选。下面是几个常用的文件类型标识符。

  • c: 字符设备
  • d: 目录
  • f: 常规文件
  • l: 符号链接
比如根据文件的扩展名查找普通文件。
find / -type f -name "*.log"
也可以根据文件的大小进行筛选。其中文件大小所支持的语义化单位有 c, k, M, G,就是我们常用的单位。
比如查找文件体积大于 1G,且后缀名为mp4的文件。
find / -type f -name "*.mp4" +1G
加号表示大于,相对应的,减号表示小于。
find / -type f -name "*.mp4" -20M
对于文件还有三个属性特别重要,就是

  • atime 最近访问时间
  • mtime 最近修改时间
  • ctime 最近状态更改时间
比如查找最近一周更改过的文件:
find / -atime -7
比如查找最近一天有过修改的文件:
find / -mtime -1
组装起来
下面我们就把上一节所学的筛选项组合起来,形成功能强大的一行代码。
比如服务器上有许多日志文件,我们把那些7天之内没有过修改的,筛选出来,并执行删除。
find /tmp -type f -name "*.log" -mtime +7 -exec rm -f {} \;
写在最后
系统管理的利器,你值得拥有,赶紧实践起来吧。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表