引言
我们都知道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 :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
领取专属 10元无门槛券
私享最新 技术干货