语法格式:
语法格式 | find [路径] [选项] [操作] |
选项参数对照表:
选项 | 含义 |
-name | 根据文件名查找,支持模糊匹配 |
-iname | 根据文件名查找,不区分大小写 |
-perm | 根据文件权限查找 |
-prune | 该选项可以排除某些查找目录 |
-user | 根据文件属主查找 |
-group | 根据文件属组查找 |
-mtime -n/+n/n | 根据文件更改时间查找 -n: n天以内修改的文件 +n: n天以外修改的文件 n: 正好n天修改的文件 |
-mmin -n/+n/n | 根据文件更改时间查找 -n: n分钟以内修改的文件 +n: n分钟以外修改的文件n: 正好n分钟修改的文件 |
-nogroup | 查找无有效属组的文件 |
-nouser | 查找无有效属主的文件 |
-newer file1 ! file2 | 查找更改时间比file1新但比file2旧的IDE文件 |
-type | 根据文件类型查找 f: 文件 d: 目录 c: 字符设备文件 b: 块设备文件 l: 链接文件 p: 管道文件 |
-size -n/n/+n | 根据文件大小查找 -n: 大小小于n +n: 大小大于n n: 大小等于n |
-mindepth n | 从n级子目录开始搜索 |
-maxdepth n | 最多搜素到n级子目录 |
打印输出 | |
-exec | 对搜索到的文件执行特定的操作,格式为-exec \`command\` {} \; |
-ok | 与exec功能一样,只是每次操作都会给用户提示 |
# 查找以.conf结尾的文件
find /etc -name "*.conf"
# 忽略大小写查找文件
find /opt/ -iname "DEMO.sh"
# 根据类型查找文件名为unit04的文件
find /opt/ -type d -name "unit04"
# 查找/etc目录下大于1M的文件
find /etc -size +1M
# 查找三天内修改的文件
find /opt -mtime -3
# 限制层级进行搜索,限制最深搜索一级子目录
find /opt -maxdepth 1 -mtime -3
# 排除目录进行查找 -prune
# 通常和-path一起使用,用于将特定目录排除在搜索条件之外
# eg1: 查找当前目录下所有普通文件,但排除test目录
find . -path ./test -prune -o -type f
# eg1: 查找当前目录下所有普通文件,但排除test和test1目录
find . -path ./test -prune -o -path ./test1 -prune -o -type f
# 对搜索到的文件执行特定操作
# eg1: 搜索/etc 下的文件(非目录),文件名以conf结尾,且大于10k,然后进行删除
find /etc -type f -name "*.conf" -size +10k -exec `rm -rf` {} \;
此命令在mlocate软件包中**(没有则使用yum安装即可)**。不同于find命令在整块磁盘中搜索,locate命令在数据库(不是mysql这种哦!)文件中查找。find默认全部匹配,locate默认部分匹配。
locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
注意:也许你没有此命令,在安装后使用locate命令查找会报错(locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory),我们需要使用updatedb命令更新此文件
whereis
命令主要用于查找某个命令的二进制程序文件、帮助文档、源代码文件。
选项 | 含义 |
-b | 只返回二进制文件 |
-m | 只返回帮助文档文件 |
-s | 只返回源代码文件 |
whereis nginx
->nginx: /usr/bin/nginx /usr/local/nginx
which
命令仅用于查找二进制程序文件。
命令 | 适用场景 | 优缺点 |
find | 查找某一类文件,比如文件名部分一致 | 功能强大,速度慢 |
locate | 只能查找单一文件 | 功能单一,速度快 |
whereis | 查找程序的可执行文件、帮助文档等 | 不常用 |
which | 只查找程序的可执行文件 | 常用于查找程序的绝对路径 |