find grep wc 查询一个目录下的文件中包含特定字符的行,以及符合条件的行数

2025-03-08 17:59:51
推荐回答(2个)
回答(1):

你这个是UNIX的shell语句,我给你写出来了:

find . -exec grep aaa {} | wc -l

补充:
find/grep/wc是UNIX上常用的命令,每个命令的说明可以在UNIX上用man查看,比如命令“man find”可以查看find命令的详细功能说明,每个参数都解释得非常清楚,还有距离。

在上面的例子中,find用来搜索当前目录、以及所有子目录下的文件,其exec参数说明找到文件要满足后面的命令,也就是里面要有aaa内容,这是grep的功能。如果不要|以及后面的wc,能把所有包含aaa的文件、以及文件中的那一行显示出来,加上wc就只统计总共有多少行。

回答(2):

假定你要查询 /path/to/dest 目录下(包括子目录)的所有文件中包含 字符 "abcdefg" 的行。

# 列出所有包含 "abcdefg" 的行及其所在的文件
find /path/to/dest -type f -exec grep -H "abcdefg" {} \;

# 统计匹配的的行数
find /path/to/dest -type f -exec grep -H "abcdefg" {} \; | wc -l

 

-type f 表示搜索的是文件 (-type d 则是目录,具体man find)

-exec {} \;   表示对找到的每一个文件名执行   ,比如找到 a.c, b.c,那么就相当于依次执行

a.c

b.c

注意 {} 会被find替换成找到的文件名, \; 是必须的,用来标记 -exec 的终结


grep -H

中搜索 , -H 表示在每一个匹配行前打印出文件名


wc -l  

统计 中的行数