shell find命令使用简介

Posted 如何在5年薪百万

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell find命令使用简介相关的知识,希望对你有一定的参考价值。

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 管道文件

[root@server1 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 返回源代码文件

# 默认查抄三种类型
[root@server1 shell]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
# 只查找二进制文件
[root@server1 shell]# whereis -b mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql

which

只查找二进制文件


# 匹配包含root的行,使用正则表达式即可
[root@server1 shell]# awk 'BEGINFS=":"/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"

以上是关于shell find命令使用简介的主要内容,如果未能解决你的问题,请参考以下文章

shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

shell命令1

shell命令之find的用法

shell 中的find命令时间参考点?

shell编程:find命令

shell命令find