shell find命令使用简介
程序员文章站
2022-04-30 17:17:30
...
find命令
基础语法
find [path] [optional] [operation]
path
- 相对路径
- 绝对路径
optional
选项 | 含义 |
---|---|
-name | 根据文件名查找(常用) |
-iname | 同上,忽略大小写 |
-perm | 根据文件权限查找 |
-prune | 排除查找某些目录 |
-user/group | 根据文件所属user,group |
- mtime -n | +n | 根据更改毫秒数(常用) |
-size -n +n | 按照文件大小 |
-type | 按照文件类型 |
按名称查找
# 查找以conf结尾文件,包含子目录
find /etc/ -name "*.conf"
按照文件类型
搜索文件夹下目录类型文件
-f 文件
-d 目录
-c 字符设备文件
-b 块设备文件
-l 连接文件
-p 管道文件
[[email protected] shell]# find . -type d
.
./dir
按照大小搜索
- +n 大于
- -n 小于
- n 等于
M代表单位,不写默认bytes
查抄大于100M的文件
find / -size +100M
按时间查找
修改时间范围的文件
- mtime默认单位天
- +n
- -n
- n
- mmin默认单位是分钟
# 查找3天内修改的文件
find /etc/ -mtime -3
opertion
- -print打印,默认选项
- -exec 对搜索结果执行命令
- -ok 和exec一样,多了提示符
语法格式: -exec 'command' {} \;
# 查找并删除conf结尾文件
find . -name "*.conf" -exec rm -rf {} \;
# find /var/log -name '*.log' -mtime +7 -exec rm -rf {} \;
逻辑运算符
可以用来连接多个find条件
- a
- o
- not
find、locate、whereis、which对别
locate
- 属于软件包mlocate
- find是在整个磁盘搜索,loacate只查找数据库文件
- find全部匹配,loacate部分匹配
- updatedb命令可以更新数据库文件,不用等待每天定时任务。/etc/updatedb.conf配置locate命令查询范围
locate 文件名
whereis
叉查找某个命令的二进制程序文件、帮助文档、源代码文件
-b 返回二进制文件
-m 返回帮助文档
-s 返回源代码文件
# 默认查抄三种类型
[[email protected] shell]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
# 只查找二进制文件
[[email protected] shell]# whereis -b mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql
which
只查找二进制文件
# 匹配包含root的行,使用正则表达式即可
[[email protected] shell]# awk 'BEGIN{FS=":"}/root/{print $0}' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
tip9 如何搜索文件内容
find命令只搜索文件名,不搜索文件内容
- 查询当前文件下的所有文件
- 使用xargs查询输出结果所有文件是否包含"itest"字符
find . -type f | xargs grep "itest"