grep -nr 命令查询字符串方式

news/2024/11/25 18:28:41/

grep -nr “搜索内容” 文件路径

其中:

  • -n:显示行号
  • -r:递归查找子目录中的文件
  • “搜索内容”:要搜索的内容
  • 文件路径:要搜索的文件路径,可以是单个文件或目录路径(将会递归搜索该目录下的所有文件)

示例:

查找文件 /var/log/syslog 中包含字符串 “error” 的行:

grep -n "error" /var/log/syslog

查找目录 /home/user 下所有文件中包含字符串 “hello world” 的行:

grep -nr "hello world" /home/user

查询头文件中内容
可以使用以下命令查询头文件中是否包含某个字符串:

grep -r "搜索内容" 文件夹路径 --include "*.h"

查找目录 /usr/include 中所有头文件中是否包含字符串 “stdio”:

grep -r "stdio" /usr/include --include "*.h"

查询非头文件中内容

可以使用以下命令查询不包含 .h 文件中某个字符串的文件:

grep -rL "搜索内容" 文件夹路径 --include "*.c" --include "*.cpp" --exclude "*.h"

例如:

grep -rL "stdio" /home/user/project --include "*.c" --include "*.cpp" --exclude "*.h"

只查询.c .h中abc字符串

grep -nr --include=*.{c,h} 'abc' /path/to/directory

过滤文件夹方法

可以使用 grep 命令结合 --exclude-dir 参数来过滤掉指定的文件夹。具体命令如下:

grep -r "search_pattern" /path/to/search --exclude-dir=folder1 --exclude-dir=folder2

解释一下各参数的含义:

  • -r:递归搜索指定目录下的文件。
  • "search_pattern":需要搜索的字符串或正则表达式。
  • /path/to/search:需要搜索的目录路径。
  • --exclude-dir=folder1:排除名为 folder1 的子目录,可以排除多个子目录,例如
--exclude-dir=folder1 --exclude-dir=folder2。

执行该命令后,将会在 /path/to/search 目录下搜索所有不包含 folder1folder2 的文件,并输出包含 search_pattern 的行。

需要注意的是,--exclude-dir 参数只会排除指定目录下的文件,而不会排除该目录的子目录。如果需要排除子目录,可以在子目录中再次使用 --exclude-dir 参数排除需要排除的子目录。

查询指定字符

例如:grep -nr 只查询abc,不能出现abcd这样类型的方法
可以使用正则表达式来限制 grep 命令的搜索范围,从而只查询 abc 而不查询 abcd 等包含 abc 的字符串。具体命令如下:

grep -nrw '/path/to/search' -e 'abc\b' -e 'abc[^d]'

解释一下各参数的含义:

  • -n:显示行号。
  • -r:递归搜索指定目录下的文件。
  • -w:只匹配整个单词,不匹配单词的一部分。
  • /path/to/search:需要搜索的目录路径。
  • -e 'abc\b':使用正则表达式搜索包含单词 abc 的行,\b 表示单词边界。
  • -e 'abc[^d]':使用正则表达式搜索包含单词 abc 且后面不是 d 的行,[^d] 表示不匹配字符 d

执行该命令后,将会在 /path/to/search 目录下搜索所有包含单词 abc 且不包含 abcd 的文件,并输出包含 abc 的行号和内容。

需要注意的是,该命令只能限制 abc 与其他字符之间的关系,无法限制 abc 与其他字符在同一单词中的情况。如果需要查询 abc 但不查询 abcd,则需要使用正则表达式进行限制。


http://www.ppmy.cn/news/49124.html

相关文章

c++ 静态绑定和动态绑定

C 中有两种不同的函数调用方式:静态绑定和动态绑定。 静态绑定 静态绑定是指在编译时确定调用哪个函数。也就是说,编译器会根据函数调用的名称和参数类型来确定要调用的函数。这种方式也被称为静态多态或编译时多态。 静态绑定适用于以下情况&#xff…

如何恢复回收站中被删除的文件?高效的恢复技巧

一般情况下,我们从电脑上普通删除的文件,会经过回收站(除非文件过大),想要在回收站找回删除的东西,是很简单的,我们只需要打开回收站,找到删除的文件,右键点击并选择还原…

three.js(JS 三维模型库)介绍和入门

介绍: three.js是一个基于WebGL的JavaScript 3D库。它封装了WebGL API,为开发者提供了简单易用的API,以便在Web浏览器中展示3D图形。three.js提供了几个组件、方法和工具,用于创建和处理3D图形,使得开发者可以在Web浏…

Python 环境搭建

Unix & Linux 平台安装 Python: 以下为在 Unix & Linux 平台上安装 Python 的简单步骤: 打开 WEB 浏览器访问https://www.python.org/downloads/source/选择适用 于Unix/Linux 的源码压缩包。下载及解压压缩包。如果你需要自定义一些选项修改Modules/Setu…

【软件测试二】开发模型和测试模型,BUG概念篇

目录 1.软件的生命周期 2.瀑布模型 3.螺旋模型 4.增量,迭代 5.敏捷---scrum 1. 敏捷宣言 2.角色 6. 软件测试v模型 7.软件测试w模型 8.软件测试的生命周期 9.如何描述一个BUG 10.如何定义BUG的级别 11.BUG的生命周期 12.产生争执怎么办 1.软件的生命周期…

【Java】Java8接口中方法区别和使用

Java接口说明 jdk1.8之前接口只能是抽象方法。实现接口必须重写所有方法,比较麻烦。在java8中,支持default和static方法,这样,实现接口时,可以选择是否对default修饰的方法重写。 抽象方法 接口当中的抽象方法&#x…

Python datetime基本使用

time和datetime的区别 time time提供的功能更加接近操作系统层面,主要调用C平台的C libarary的同名函数,表现的日期范围仅限于1970-2038。这里的time指的是大模块的time,不是datetime中的time import timeif __name__ __main__:# 获取时间…

redis 主从模式、哨兵模式、cluster模式的区别

参考: ​https://blog.csdn.net/qq_41071876/category_11284995.html https://blog.csdn.net/weixin_45821811/article/details/119421774 https://blog.csdn.net/weixin_43001336/article/details/122816402 Redis有三种模式,分别是:主…