当前位置: 首页 > 工具软件 > Group Shell > 使用案例 >

Shell编程之常用查找命令

于恺
2023-12-01

文件查找之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只查找程序的可执行文件常用于查找程序的绝对路径
 类似资料: