欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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命令只搜索文件名,不搜索文件内容

  1. 查询当前文件下的所有文件
  2. 使用xargs查询输出结果所有文件是否包含"itest"字符
find . -type f  | xargs grep "itest"