【Linux】【命令】查找(grep/find)与统计(wc)

查找与统计

  • grep
  • find
  • wc
  • Examples


grep


grep 命令用于在文件中或者标准输出中搜索特定字符串,并显示匹配结果。

grep 全称:Global Regular Expression Print

基本语法

grep [OPTION]... PATTERN [FILE] ...
  1. 默认情况下,PATTERN 是一个基本正则表达式(Basic Regular Expression);
  2. 配合 | 可以在标准输出中进行字符串检索;

示例1

grep -i 'hello world' memu.h main.c
#
grep -i 'hello world' *.c

选项

optionsUsage
-c仅显示特定字符串所在行的行号
-i忽略大小写
-n显示行号
-v反向选择,仅列出没有特定字符串的行
-r递归搜索文件目录(terminal 显示路径和搜索到内容)
-E使用拓展的正则表达式 (grep -E = egrep
-l仅显示包含特定字符串的文件的名称
-C n打印匹配行的前后n行
-f file从 file 中获取 PATTERN 进行匹配

基本正则表达式

ExpressionUsage
.匹配任意单个字符。
*匹配前一个字符零次或多次
[ ]匹配括号内的任意一个字符
[^ ]匹配括号内以外的任意一个字符
\转义字符,用于匹配特殊字符)
^匹配行首
&匹配行尾
I或运算符
( )分组运算符

拓展正则表达式

ExpressionUsage
+匹配前一个字符一次或多次
?匹配前一个字符零次或一次
{ }匹配前一个字符指定次数

示例

① 对多个文件进行检索的时候,会显示文件名和特定字符串所在行的完整内容。

在这里插入图片描述

② 遍历当前目录下的所有文件,包含子目录中的文件,并进行搜索。

grep -r 'module' ./*

③ 使用 -f 选项

在这里插入图片描述

④ 同时使用多个选项

在这里插入图片描述

⑤ 正则表达式的使用

注意使用转义字符

在这里插入图片描述


find


find 命令用于在文件系统中搜索文件和目录,并对找到的项目执行操作。通过文件名查找文件的所在位置,文件名查找支持模糊匹配。

grep 是在文件中找字符串,find 是在目录下找文件或者其他内容。

基本语法

find [OPTION] [path ...] [expression]

示例

find ./* -name "*.v"

命令的执行结果示例如下:
在这里插入图片描述

该命令用于搜索当前目录下以 v 为后缀的所有文件,它会自动对子目录进行检索,最终输出目标文件的相对路径。

选项

这里的选项可以分为两部分,一个是查找文件的选项,另一个是找到文件之后,对其进行某种操作的选项。

筛选选项:

optionsUsage
-name pattern根据文件名进行查找,pattern 中支持通配符 * 和 ?。
-iname pattern根据文件名进行查找,忽略大小写
-type type根据文件类型进行查找,f表示文件,d 表示目录,l 表示链接
-size n/+n/-n根据文件大小进行查找,+n 表示文件大于某个值,比如 10M,-n 表示文件小于某个值,n则是等于
-depth先搜索子目录,再搜索当前目录
-maxdepth搜索的最大深度
-perm根据全选搜索文件,例如 -perm 755

操作选项(放在命令的最后面):

optionsUsage
-delete找到文件后,将其删除
-exec coomand {} \;对找到的文件执行命令
-ok coomand {} \;对找到的文件执行命令,并在执行前提示用户确认

示例:

查找 /home 目录下所有大于 10M 的文件:

find /home -size +10M

查找当前目录下所有以 .txt 结尾的文件,并把它们复制到 /backup 目录:

find . -name "*.txt" -exec cp {} /backup \;

查找当前目录下所有以 .log 结尾的文件,并提示用户是否删除它们:

find . -name "*.log" -ok rm {} \;

wc


统计文件或者标准输出的行数、字数(word)或字节(Byte)数。

基本语法

wc [OPTION]... [FILE]...
  1. 可以同时指定多个文件
  2. 如果文件名是 -,或者没有指定文件名称,则 wc 会从标准输出中读取数据并统计数量。
  3. 这里的 word 指的是以空白符为分界的连续的字符串。(A word is non-zero-length sequence of characters delimited by white space.)

wc 默认统计行数、字数和字节数,统计单个文件的结果如下:

在这里插入图片描述

14 23 147 依次是行数、字数和字节数。

同时统计多个文件时,最后会有一个统计值。

在这里插入图片描述

选项

optionsUsage
-l统计行数
-w统计字数
-c统计字节数
-m统计字符的数量(character counts)
-L最长行的长度

Examples


wc 命令往往是配合其他命令(grep|等)一起使用,具体示例如下。

① 统计某个文件中 Error 的数量:

grep "Error" tk_scan.log | wc -l

② 统计当前目录下文件的数量(不包含子目录)

ls -l | grep "^-" | wc -l

③ 统计当前目录下文件的数量(包含子目录)

ls -lR | grep "^-" | wc -l

④ 查看某目录下文件夹(目录)的个数(包括子目录)

ls -lR | grep "^d" | wc -l

⑤ 统计当前文件夹下某个文件或某种后缀名称的文件的数量

find . -name filename | wc -l
#
find . -name "*.v" | wc -l

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/894269.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Agentic RAG(基于智能体的检索增强生成)是检索增强生成(Retrieval-Augmented Generation,RAG)技术的一种高级形式

Agentic RAG(基于智能体的检索增强生成)是检索增强生成(Retrieval-Augmented Generation,RAG)技术的一种高级形式,它通过引入人工智能代理(Agent)的概念,为语言模型赋予了…

2024.10月18日- Vue2组件开发(3)

Vue组件开发 一、 ref属性 如果在vue里,想要获取DOM对象,并且不想使用JS的原生语法,那么就可以使用ref属性。ref属性的用法: 1)在HTML元素的开始标记中,或者在Vue子组件中的开始标记中定义,相…

Pytest参数详解 — 基于命令行模式!

1、--collect-only 查看在给定的配置下哪些测试用例会被执行 2、-k 使用表达式来指定希望运行的测试用例。如果测试名是唯一的或者多个测试名的前缀或者后缀相同,可以使用表达式来快速定位,例如: 命令行-k参数.png 3、-m 标记(…

jenkins添加新服务

jenkins添加新服务 新建item 添加流水线 node{def envname "ENVIRONMENT:1234-dev"def projectGitUrl http://xxxxx/xxxxxx/12345.gitdef imageServer harbor.xxxxx.com //镜像仓库地址def projectAppName 12345-applicationdef projectGitBranch dev//git分…

Android Camera2在textureView中的预览和拍照

Camera2预览和拍照 1、Camera2相机模型2、Camera2的重要类3、Camera2调用流程4、Camera2调用实现 1)定义TextureView作为预览界面2)设置相机参数3)开启相机4)开启相机预览5)实现PreviewCallback6)拍照 1、Camera2相机模型 解释上诉示意图,假如想要同时拍摄两张不同…

React高级Hook

useReducer useReducer 是 React 提供的一个 Hook,用于在函数组件中使用 reducer 函数来管理组件的 state。它类似于 Redux 中的 reducer,但仅用于组件内部的状态管理。useReducer 可以使复杂的状态逻辑更加清晰和可维护。 基本用法 useReducer 接收…

五金件 CNC 加工 —— 为您的产品增添价值

在现代制造业中,五金件作为各种产品的重要组成部分,其质量和精度直接影响着产品的性能和外观。而 CNC(Computer Numerical Control,计算机数控)加工技术的出现,为五金件的生产带来了革命性的变化。它以高精度、高效率和高稳定性的…

031 商品上架-增量同步和全量同步(cubemall-search模块)

文章目录 增量同步全量同步SpuInfoDao.xmlSpuInfo实体类application.ymlpom.xmlSpuInfoController.javaSpuInfoDao.javaSpuInfoEntity.javaSpuInfoRepository.javaSpuInfoServiceImpl.javaCubemallSearchApplication.java 增量同步 1.功能分析 前端页面,点击"…

LabVIEW智能螺杆空压机测试系统

基于LabVIEW软件开发的螺杆空压机测试系统利用虚拟仪器技术进行空压机的性能测试和监控。系统能够实现对螺杆空压机关键性能参数如压力、温度、流量、转速及功率的实时采集与分析,有效提高测试效率与准确性,同时减少人工操作,提升安全性。 项…

智能指针(3)

目录 可能问题五: 问题分析: 答案格式: shared_ptr的模拟实现 部分1:引用计数的设计(分考点1) 代码实现: 部分2:作为类所必须的部分(分考点2) 代码实现: 部分3:拷贝构造函数…

河北工业大学《2021年+2020年980自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《河北工业大学980自控考研资料》的真题篇,真题年份为2004-最新一年。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2021年真题 2020年真题 Part1:2021年…

Data+AI下的数据湖和湖仓一体发展史

DataAI下的数据湖和湖仓一体发展史 前言数据湖的“前世今生”AI时代的救星:湖仓一体湖仓一体实践演进未来趋势:智能化、实时化结语 前言 数据湖?湖仓一体?这是什么高科技新名词? 别急,我们慢慢聊。想象一…

DBeaver导出数据表结构和数据,导入到另一个环境数据库进行数据更新

在工作中,我们会进行不同环境之间数据库的数据更新,这里使用DBeaver导出新的数据表结构和数据,并执行脚本,覆盖另一个环境的数据库中对应数据表,完成数据表的更新。 一、导出 右键点击选中想要导出的数据表&#xff0…

parent参数

一、parent参数 parent参数除了有之前父窗口的界面效果外,还体现了Qt的内存管理策略。parent参数的对象是当前创建的对象的父对象。因此在Qt中存在父对象与子对象的概念,需要注意的是,此处的父子关系与继承无关,至于parent参数有关…

UNION 联合查询

1.UNION ALL联合查询 同样为了演示方便,先向 teacher 表插入多条测试数据: INSERT INTO teacher (name,age,id_number,email) VALUES (姓名一,17,42011720200604077X,NULL), (姓名二,18,42011720200604099X,123qq.com), (姓名三,19,42011720200604020X…

Web 应用防火墙(WAF)

在现代Web应用开发中,Nginx作为反向代理的架构被广泛采用。这种架构具备高性能、易扩展的特点,但也带来了Web层的安全挑战。Web应用防火墙(WAF)作为专门防御Web应用层攻击的安全措施,能够为此架构增加一层强有力的保护…

服务器托管的优缺点有哪些?

由于数字化程度不断提高,服务器在日常业务中发挥着越来越重要的作用。在大多数情况下,服务器由公司自己维护和管理。但对于一些公司来说,托管服务器(将这些任务交给专业人员)是更好的选择。 关于服务器的优缺点,有一点是明确的&am…

Centos7 安装升级最新版Redis7.4.1

1. 前言 今天阿里云云盾检测出一个redis低版本的漏洞,需要升级到稳定高版本修复漏洞,升级过程遇到了一些坑,特记录分享给大家,原服务器默认yum源安装的gcc 是4.8.5 ,默认安装redis是 3.2.12(如下图): 2.升级GCC 升级新版redis需要更高级的gcc支持,这里我们就选择升级…

打包使用pythn编写的maya插件,使用pyeal打包

1.安装python,注意版本一定要和maya上面的python解释器版本一致 2.安装pyeal使用pycharm或者maya自带的python解释器mayapy.exe 3.如果有别的库,下载安装到你需要的文件夹中: 使用mayapy: "D:\AnZhuangBao\maya2022\2022\maya2022AZ\Maya2022\bin\m…

第二百八十八节 JPA教程 - JPA查询连接OrderBy示例

JPA教程 - JPA查询连接OrderBy示例 以下代码显示如何使用ORDER BY子句和连接条件。 List l em.createQuery("SELECT e " "FROM Project p JOIN p.employees e " "WHERE p.name :project " "ORDER BY e.name").setParameter("pr…