grep 命令系列:如何在 UNIX 中根据文件内容查找文件
创始人
2024-03-01 16:33:32
0

为了完成课程作业,我写了很多 C 语言代码并把它们保存为 /home/user/c/*.c 和 *.h。那么在 UNIX shell 窗口中我如何能通过字符串或者单词(例如函数名 main())文件内容来查找文件呢?

你需要用到以下工具:

[a] grep 命令 : 输出匹配模式的行。

[b] find 命令: 在目录层次中查找文件。

使用 grep 命令根据内容查找文件

输入以下命令:

grep 'string' *.txt
grep 'main(' *.c
grep '#include' *.c
grep 'getChar*' *.c
grep -i 'ultra' *.conf
grep -iR 'ultra' *.conf

其中

  • -i : 忽略模式(匹配字符串 valid、 VALID、 ValID )和输入文件(匹配 file.c FILE.c FILE.C)的大小写。
  • -R : 递归读取每个目录下的所有文件。

高亮匹配到的模式

在搜索大量文件的时候你可以轻松地高亮模式:

$ grep --color=auto -iR 'getChar();' *.c

为查找到的模式显示文件名和行号

你也许需要显示文件名和行号:

$ grep --color=auto -iRnH 'getChar();' *.c

其中,

  • -n : 在输出的每行前面添加以 1 开始的行号。
  • -H : 为每个匹配打印文件名。要搜索多个文件时这是默认选项。(LCTT 译注:-h 选项强制隐藏文件名;另外 -l 和 -L 选项用于仅显示匹配/不匹配的文件名,而 -H 和 -h用于控制在显示匹配行前显示/不显示文件名,注意区分。)
$grep --color=auto -nH 'DIR' *

输出样例:

Fig.01: grep 命令显示搜索到的模式

图 01: grep 命令显示搜索到的模式

你也可以使用 find 命令:

$ find . -name "*.c" -print | xargs grep "main("

via: http://www.cyberciti.biz/faq/unix-linux-finding-files-by-content/

作者:Vivek Gite 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

CentOS下如何查看与管...
文件找不到:提示“404 Not Found”,这就好比你去图书馆...
2025-02-25 21:50:33
button.Button...
这个错误提示意味着在button类中使用了button_list,...
2025-01-10 03:00:39
不使用(e)grep中的-...
在不使用grep中的-v选项排除模式中的单词的情况下,可以使用gr...
2024-12-28 08:31:29
不确定为何在“grep”s...
可以尝试使用以下命令,其中“regex”是正则表达式的模式: gr...
2024-12-27 21:01:08
部分匹配两个不同文件中的单...
下面是使用sed、awk和grep来部分匹配两个不同文件中的单词,...
2024-12-24 06:02:07
避免在grep结果中跟随破...
要避免在grep结果中跟随破折号,可以使用grep命令的--选项来...
2024-12-17 06:01:18

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...