学习和工作中,遇见比较多需要使用find命令查找文件,最初的时候也只是用来查找文件,但是没有深入的学习和了解。到后面开始接触自主运维的游戏时,每天会生成很多备份的数据库文件。为了对相关的日志进行定期清理,需要使用到find命令和ctime选项对备份目录内的文件进行筛选和过滤,保留7天的游戏数据库数据。再后来慢慢的需求多了,也学会了使用-type选项,通过文件类型来查询文件。
目前来说find的使用还是比较浅显,还需要多看看他人的实例。
1 find基础
1.1 命令格式
|
|
1.2 选项参数
|
|
2 查找条件
2.1 根据名称查找
2.2 根据文件从属关系
2.3 根据文件的类型
|
|
选项 | 含义 |
---|---|
f | 普通文件 |
d | 目录文件 |
l | 符号链接文件 |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
s | 套接字文件 |
2.4 根据文件的大小
|
|
2.5 根据时间戳
|
|
2.5.1 以天为单位
- -atime [+|-]#
|
|
- -mtime
- -ctime
2.5.2 以小时为单位
2.5.3 以分钟为单位
|
|
2.6 根据权限查找
|
|
2.6.1 精确查找
就是匹配权限值完全相等。
2.6.2 /model
只要有一组用户匹配到一个权限即可。
通俗说:就是属主拥有给定属主权限的某一个,或者数组拥有给定权限的某一个,或者其他用户拥有给定权限的某一个即可。
2.6.3 -mode
存在并且的关系。
通俗说:就是给定的属主权限必须拥有。并且给定的数组权限必须拥有。并且给定的其他用户权限必须拥有。
2.6.4 处理动作
参数 | 操作内容 |
---|---|
输出至标准输出;默认的动作; | |
-ls | 类似与对查找到的文件执行“ls -l”命令,输出文件的详细信息; |
-delete | 删除查找到的文件; |
-fls /PATH/TO/SOMEFILE | 把查找到的所有文件的长格式信息保存到指定文件中; |
-ok COMMAND {} \ | 对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认; |
-exec COMMAND {} \ | 对查找到的每个文件执行由COMMAND表示的命令; |
- 注意
find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;有些命令不能接受过长的参数,此时命令执行会失败。
处理办法1find | xargs COMMAND
3 常用实例
- 空目录/空文件
|
|
- 根据名字查找
|
|
- 根据扩展名查找
|
|
- 具有特殊权限且特定扩展名的文件
|
|
- 根据文件具有的权限属性查找
|
|
- 未知拓展名,使用文件名查找
|
|
- 在24小时内修改过的文件
|
|
- 最近24小时内存取过的文件
|
|
- 根据所有者查找文件
|
|
- 查重并删除文件
|
|
- 查找2017-03-03到2017-03-28之间的文件
|
|
- 3天”以前”被改动过的文件 (前第三天以前 → 2011/09/05 12:00 以前的文件) (> 72 小时)
|
|
- 3天內被改动过的文件 (2011/09/05 12:00 ~ 2011/09/08 12:00 內的文件) (0 ~ 72 小时內)
|
|
- 前第 3 天被改动过的文件 (2011/09/04 12:00 ~ 2011/09/05 12:00 內的文件) (72 ~ 96 小时)
|
|