当前位置: 首页 > news >正文

find和grep命令的简单使用

find和grep命令的简单使用

  • 一、find
    • 例子--不同条件查找
  • 二、grep
    • 正则表达式的简单说明
    • 例子--简单文本查找
    • 例子--结合管道进行查找

一、find

find 命令在指定的目录下查找对应的文件。

find [path] [expression]

● path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
● expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。

常用可选参数:

  1. -name pattern:按文件名查找,支持使用通配符 * 和 ?。
  2. -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
  3. -size [±]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
  4. -mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
  5. -user username:按文件所有者查找。
  6. -group groupname:按文件所属组查找。
  7. -amin n:查找在 n 分钟内被访问过的文件。
  8. -atime n:查找在 n*24 小时内被访问过的文件。
  9. -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
  10. -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
  11. -mmin n:查找在 n 分钟内被修改过的文件。
  12. -mtime n:查找在 n*24 小时内被修改过的文件。

例子–不同条件查找

  1. 查找 /home 目录下大于 1MB的文件
find /home -size +1M
  1. 查找 /home 目录下小于1MB的文件
find /home -size -1M
  1. 查找 /etc 目录下 在7天前修改过的文件(不包含文件目录)
find /etc -mtime +7 -type f 
  1. 查找 / 下及其字目录的所有文件后缀为 .c的文件
find / -name "*.c"
  1. 查找 /home及其子目录下文件类型为目录的文件
find /home -type d 
  1. 查找robin用户所拥有的文件中以txt结尾的文件
find -user robin -name "*.txt"

二、grep

grep命令在文本文件中查找指定模式的词或短语,然后在标准输出设备上显示包括给定字符串模式的所有行。

grep -E 等同于 egrep , 使用扩展的正则表达式模式进行搜索
grep -F 等同于 fgrep ,字符串快速检索不支持正则表达式

 grep [选项]... PATTERN [FILE]...

● pattern - 表示要查找的字符串或正则表达式。
● files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。

常用选项:
● -i:忽略大小写进行匹配。
● -v:反向查找,只打印不匹配的行。
● -n:显示匹配行的行号。
● -r:递归查找子目录中的文件。
● -l:只打印匹配的文件名。
● -c:只打印匹配的行数。
● -x : 只显示整个行都严格匹配的行
● -E 将查找模式解释成扩展的正则表达式
● -F 将查找模式解释成单纯的字符串

正则表达式的简单说明

正则表达式(简称 “regex”)是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。

组合说明
[abc]匹配中括号中的所有字符
[a-z]匹配中括号中的字符范围内的所有字符
[^abc]匹配除中括号中的字符外的所有字符
*匹配前面的子表达式零次或多次
+匹配前面的子表达式的一次或多次
匹配前面的子表达式零次或一次
.代表任意一个字符
$匹配输入字符串的结束位置,以…结尾
^匹配输入字符串的起始位置,以…开头
{n}匹配确定的n次
{n,}至少匹配n次
{n,m}最少匹配n次最多匹配m次

例子–简单文本查找

首先,在当前目录下创建一个文件,用于grep命令的练习

vi a.txt
Albania
Algeria
Canada
0
1
3
11
  1. grep 对于 匹配的字符串区分大小写
    在这里插入图片描述

  2. “.” 只匹配一次任意字符
    在这里插入图片描述

这里第二次匹配,因为没有添加严格限制选项,它依然匹配到了内容,加上严格限制以后得出了正确的结果。

  1. “+” 与 “?” 和 “”的区别
    “+” 代表匹配前面的子表达式一次或多次 ; “ ?”相当于占位符,匹配前面的子表达式零次或一次; “
    ”代表匹配前面的子表达式任意次。
    在这里插入图片描述

这里的话,有一个问题就是多个正则表达式的特殊字符,需要使用 -E 开启正则表达式匹配模式,否则的话会出现找不到的问题。

在这里插入图片描述

例子–结合管道进行查找

  1. 查找根目录下的所有s开头的文件及目录
ls / | gerp -E ^s

在这里插入图片描述

  1. 查找/home目录下不是以数字结尾的文件及目录
ls /home | grep -v -E [0-9]$

在这里插入图片描述

  1. 查找/etc/passwd 中的以 user开头的账号信息
cat /etc/passwd | grep -E ^user*    # 看起来貌似直接使用grep不用管道也行
# 等同于 grep -E ^user* /etc/passwd

在这里插入图片描述

相关文章:

  • 【Vue原理解析】之插件系统
  • 深度学习名词总结
  • 【算法】最短路径——迪杰斯特拉 (Dijkstra) 算法
  • 解决java发邮件错误javax.net.ssl.SSLHandshakeException: No appropriate protocol
  • 亚马逊上架儿童睡衣,婴儿沐浴座椅,不锈钢儿童水杯被召回的原因解析
  • 终于有人把VMware虚拟机三种网络模式讲清楚了!
  • 【力扣刷题篇】栈与队列相关OJ题及题解
  • 中睿天下Coremail | 2023年Q3企业邮箱安全态势观察报告
  • rocketmq-exporter配置为系统服务-自启动
  • SQL对数据进行去重
  • Java自学第8课:电商项目(3) - 重新搭建环境
  • Linux实战一天一个小指令--《日志查看》
  • 设备报修流程要怎么优化?工单管理系统如何提高设备维修效率?
  • 云原生服务高可用性保持的简单思考
  • Linux 网络管理
  • php的引用
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Angular数据绑定机制
  • C++11: atomic 头文件
  • dva中组件的懒加载
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • express + mock 让前后台并行开发
  • go append函数以及写入
  • Hibernate最全面试题
  • Java|序列化异常StreamCorruptedException的解决方法
  • LeetCode29.两数相除 JavaScript
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • php中curl和soap方式请求服务超时问题
  • PV统计优化设计
  • Python爬虫--- 1.3 BS4库的解析器
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpringBoot几种定时任务的实现方式
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Windows Containers 大冒险: 容器网络
  • 电商搜索引擎的架构设计和性能优化
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 观察者模式实现非直接耦合
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 面试总结JavaScript篇
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用 Docker 部署 Spring Boot项目
  • 我建了一个叫Hello World的项目
  • PostgreSQL之连接数修改
  • raise 与 raise ... from 的区别
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​TypeScript都不会用,也敢说会前端?
  • ​马来语翻译中文去哪比较好?
  • # 透过事物看本质的能力怎么培养?
  • #include到底该写在哪
  • #Linux(帮助手册)
  • $.ajax,axios,fetch三种ajax请求的区别
  • (4)logging(日志模块)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (TipsTricks)用客户端模板精简JavaScript代码