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

查找与统计


|---|
| |

grep


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

grep 全称:Global Regular Expression Print

基本语法

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

示例1

bash 复制代码
grep -i 'hello world' memu.h main.c
#
grep -i 'hello world' *.c

选项

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

基本正则表达式

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

拓展正则表达式

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

示例

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

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

bash 复制代码
grep -r 'module' ./*

③ 使用 -f 选项

④ 同时使用多个选项

⑤ 正则表达式的使用

注意使用转义字符


|---|
| |

find


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

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

基本语法

bash 复制代码
find [OPTION] [path ...] [expression]

示例

bash 复制代码
find ./* -name "*.v"

命令的执行结果示例如下:

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

选项

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

筛选选项:

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

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

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

示例:

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

bash 复制代码
find /home -size +10M

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

bash 复制代码
find . -name "*.txt" -exec cp {} /backup \;

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

bash 复制代码
find . -name "*.log" -ok rm {} \;

|---|
| |

wc


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

基本语法

bash 复制代码
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 依次是行数、字数和字节数。

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

选项

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

|---|
| |

Examples


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

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

bash 复制代码
grep "Error" tk_scan.log | wc -l

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

bash 复制代码
ls -l | grep "^-" | wc -l

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

bash 复制代码
ls -lR | grep "^-" | wc -l

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

bash 复制代码
ls -lR | grep "^d" | wc -l

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

bash 复制代码
find . -name filename | wc -l
#
find . -name "*.v" | wc -l
相关推荐
笨笨饿2 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
cn_lyg2 小时前
Linux的入门级常用操作命令
linux·运维·服务器
就叫飞六吧2 小时前
TOML vs YAML:为什么 Cargo 选择 TOML?
linux·运维·服务器
IMPYLH3 小时前
Linux 的 test 命令
linux·运维·服务器·chrome·bash
xrui583 小时前
2026实战:深度解析 Gemini 3.1 镜像站函数调用在自动化运维工单中的应用
linux·服务器·网络
HackTwoHub3 小时前
Linux 内核史诗级本地提权 全网深度复现、原理完整分析( CVE-2026-31431)
linux·运维·安全·web安全·网络安全·代码审计·安全架构
她说彩礼65万4 小时前
C语言 文件
linux·服务器·c语言
txg6664 小时前
自动驾驶领域热点简报(2026-04-26 ~ 2026-05-03)
linux·人工智能·自动驾驶
二哈赛车手4 小时前
新人笔记---ES和kibana启动问题以及一些常用的linux的错误排查方法,以及ES,数据库泄密解决方案[超详细]
java·linux·数据库·spring boot·笔记·elasticsearch
嵌入式×边缘AI:打怪升级日志4 小时前
嵌入式Linux开发核心自测题(全系列精华浓缩)
java·linux·运维