文件查找之find

语法格式:

语法格式

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级子目录

-print

打印输出

-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` {} \;

locate

      此命令在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

      whereis命令主要用于查找某个命令的二进制程序文件、帮助文档、源代码文件。

选项

含义

-b

只返回二进制文件

-m

只返回帮助文档文件

-s

只返回源代码文件

whereis nginx
->nginx: /usr/bin/nginx /usr/local/nginx

which

      which命令仅用于查找二进制程序文件。

总结

命令

适用场景

优缺点

find

查找某一类文件,比如文件名部分一致

功能强大,速度慢

locate

只能查找单一文件

功能单一,速度快

whereis

查找程序的可执行文件、帮助文档等

不常用

which

只查找程序的可执行文件

常用于查找程序的绝对路径