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

引言

我们都知道Linux操作系统,一般没有标配桌面窗口。使用 Bash 与操作系统对话。同时,Linux 操作系统,秉持了UNIX操作系统的“一切皆文件”的哲学思想,把各种类型的数据归纳为文件。

那么对于文件数量庞大的 Linux 系统如何快速高效的索引出我们需要查找的对象?这就体现出系统管理的效率水平。

今天我们给大家介绍这个指令——find。无论你是做系统管理或者编写 Bash 脚本文件,它都会是出现频次很高的那个。

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

用法

下面这个是基本的用法,根据文件名查找。

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 :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。