如何在Linux上找到包含特定文本的所有文件?

时间:2013-06-06 08:06:46

标签: linux text grep directory find

我正试图找到一种方法来扫描整个Linux系统,查找包含特定文本字符串的所有文件。只是为了澄清,我正在寻找文件中的文本,而不是文件名。

当我查找如何执行此操作时,我遇到了两次此解决方案:

find / -type f -exec grep -H 'text-to-find-here' {} \;

然而,它不起作用。它似乎显示系统中的每个文件。

这是否接近正确的方法?如果没有,我该怎么办?这种在文件中查找文本字符串的能力对于我正在进行的一些编程项目非常有用。

54 个答案:

答案 0 :(得分:8148)

执行以下操作:

grep -rnw '/path/to/somewhere/' -e 'pattern'
  • -r-R是递归的,
  • -n是行号,
  • -w代表整个单词的匹配。
  • 可以添加
  • -l(小写L)以仅提供匹配文件的文件名。

除此之外,--exclude--include--exclude-dir标志可用于高效搜索:

  • 这只会搜索那些具有.c或.h扩展名的文件:

    grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
    
  • 这将排除搜索所有以.o扩展名结尾的文件:

    grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
    
  • 对于目录,可以通过--exclude-dir参数排除特定目录。例如,这将排除目录dir1 /,dir2 /以及所有匹配* .dst /:

    grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
    

这对我来说非常有效,可以达到和你一样的目的。

如需更多选项,请检查man grep

答案 1 :(得分:1291)

您可以使用grep -ilR

grep -Ril "text-to-find-here" /
  • i代表忽略大小写(在您的情况下是可选的)。
  • R代表递归。
  • l代表“显示文件名,而不是结果本身”。
  • /代表从您计算机的根目录开始。

答案 2 :(得分:283)

您可以使用ack。对于源代码,它就像grep。您可以使用它扫描整个文件系统。

只是做:

ack 'text-to-find-here'

在根目录中。

您还可以使用regular expressions,指定文件类型等


<强>更新

我刚刚发现了The Silver Searcher,它类似于ack但比它快3-5倍,甚至忽略了.gitignore文件中的模式。

答案 3 :(得分:157)

您可以使用:

grep -r "string to be searched"  /path/to/dir

r代表递归,因此将搜索指定的路径及其子目录。这将告诉您文件名以及打印出字符串出现的文件中的行。

或者类似于您正在尝试的命令(例如:)用于搜索所有javascript文件(* .js):

find . -name '*.js' -exec grep -i 'string to search for' {} \; -print

这将打印出现文本的文件中的行,但不会打印文件名。

除了这个命令,我们也可以这样写: grep -rn&#34;要搜索的字符串&#34; /路径/到/目录/或/文件 -r:递归搜索 n:将显示匹配的行号

答案 4 :(得分:99)

您可以使用:

grep -inr "Text" folder/to/be/searched/

答案 5 :(得分:59)

包含给定文本的文件名列表

首先,我相信您使用的是-H而不是-l。您也可以尝试在引号后面添加{} \

find / -type f -exec grep -l "text-to-find-here" {} \; 

实施例

假设您正在目录中搜索包含特定文本“Apache License”的文件。它将显示与下面类似的结果(输出将根据您的目录内容而有所不同)。

bash-4.1$ find . -type f -exec grep -l "Apache License" {} \; 
./net/java/jvnet-parent/5/jvnet-parent-5.pom
./commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.pom
./io/swagger/swagger-project/1.5.10/swagger-project-1.5.10.pom
./io/netty/netty-transport/4.1.7.Final/netty-transport-4.1.7.Final.pom
./commons-codec/commons-codec/1.9/commons-codec-1.9.pom
./commons-io/commons-io/2.4/commons-io-2.4.pom
bash-4.1$ 

删除区分大小写

即使您不使用“text”与“TEXT”之类的情况,也可以使用-i开关忽略大小写。您可以阅读更多详细信息here

希望这会对你有所帮助。

答案 6 :(得分:52)

grepGNUBSD

您可以使用grep工具递归搜索当前文件夹,例如:

grep -r "class foo" .

注意:-r - 递归搜索子目录。

您还可以使用通配语法在特定文件中进行搜索,例如:

grep "class foo" **/*.c

注意:通过使用globbing option**),它会以特定的扩展名或模式递归扫描所有文件。 要启用此语法,请运行:shopt -s globstar您还可以对所有文件使用**/*.*(隐藏和不扩展名除外)或任何其他模式。

如果您认为参数太长,请考虑缩小搜索范围,或使用find语法,例如:

find . -name "*.php" -execdir grep -nH --color=auto foo {} ';'

或者使用ripgrep

ripgrep

如果您正在处理较大的项目或大文件,则应使用ripgrep,例如:

rg "class foo" .

查看GitHub project page上的文档,安装步骤或源代码。

它比GNU / BSD grepucgagsift,{{3}等其他工具快得多},ack或类似的,因为它建立在pt之上,它使用有限自动机,SIMD和积极的文字优化来快速搜索。

它支持忽略.gitignore文件中指定的模式,因此可以同时将单个文件路径与多个glob模式匹配。

您可以使用常用参数,例如:

  • -i - 不敏感的搜索。
  • -I - 忽略二进制文件。
  • -w - 搜索整个单词(与部分单词匹配相反)。
  • -n - 显示您的匹配项。
  • -C / --context(例如-C5) - 增加上下文,以便查看周围的代码。
  • --color=auto - 标记匹配的文字。
  • -H - 显示找到文本的文件名。
  • -c - 显示匹配行数。可与-H结合使用。

答案 7 :(得分:51)

如果您的grep不支持递归搜索,则可以将findxargs合并:

find / -type f | xargs grep 'text-to-find-here'

我发现这比find -exec的格式更容易记住。

这将输出匹配行的文件名和内容,例如

/home/rob/file:text-to-find-here

您可能想要添加到grep的可选标记:

  • -i - 不区分大小写的搜索
  • -l - 仅输出找到匹配项的文件名
  • -h - 仅输出匹配的行(不是文件名)

答案 8 :(得分:38)

grep -insr "pattern" *
  • i:忽略PATTERN和输入文件中的大小写区别。
  • n:在输入文件中使用从1开始的行号为每行输出添加前缀。
  • s:禁止有关不存在或不可读文件的错误消息。
  • r:递归地读取每个目录下的所有文件。

答案 9 :(得分:29)

  

如何在Linux上找到包含特定文本的所有文件?   (...)

     

我两次遇到这个解决方案:

     

find / -type f -exec grep -H 'text-to-find-here' {} \;

如果在您的示例中使用 find ,最好将-s--no-messages)添加到grep,并2>/dev/null添加到grep命令的结尾,以避免findfind / -type f -exec grep -sH 'text-to-find-here' {} \; 2>/dev/null 发出的大量权限被拒绝消息:

rg 'text-to-find-here' / -l

find 是在类Unix平台上搜索文件的标准工具 - 在查找特定文本时与grep结合使用。顺便说一下,find命令通常与xargs结合使用。

出于同样目的,存在更快速,更简单的工具 - 见下文。更好的尝试它们,如果它们在您的平台上可用,当然:

更快更容易的替代方案

RipGrep - 最快的搜索工具:

ag 'text-to-find-here' / -l

<强> The Silver Searcher

ack 'text-to-find-here' / -l

<强> ack

2>/dev/null

注意:您也可以向这些命令添加 @Override protected String doInBackground(String... strings) { try { // response = facebook.request("me/friends"); response = facebook.request("me"); if (response == null || response.equals("") || response.equals("false") || response.contains("error")) { Log.v("Error", response.toString()); } else { JSONObject jsonObject = new JSONObject(response); } } catch (Exception e) { System.out.println(e); } ,以隐藏许多错误消息。

警告除非您真的无法避免,否则请勿从'/' (the root directory)进行搜索以避免长时间低效的搜索!  因此,在上面的示例中,您最好用子目录名替换“ / ”,例如“/ home”取决于您实际想要搜索的位置......

答案 10 :(得分:27)

尝试:

find . -name "*.txt" | xargs grep -i "text_pattern"

答案 11 :(得分:27)

有一个名为 The Silversearcher

的新工具
sudo apt install silversearcher-ag

它与Git和其他VCS密切合作。因此,您不会在 .git 或其他目录中获得任何内容。

您只需使用

即可
ag -ia "Search query"

它会为你完成任务!

答案 12 :(得分:26)

使用pwd从您所在的任何目录进行搜索,向下递归

grep -rnw `pwd` -e "pattern"

<强>更新 根据您使用的grep版本,您可以省略pwd。在较新的版本.似乎是grep的默认情况,如果没有给出目录 因此:

grep -rnw -e "pattern"

grep -rnw "pattern"

会做与上面相同的事情!

答案 13 :(得分:18)

即使我们没有找到字符串,也可以使用

grep

简单地跑步,

grep -RIl "" .

将打印出所有文本文件的路径,即仅包含可打印字符的文件。

答案 14 :(得分:16)

以下是可用于搜索文件的几个命令列表。

grep "text string to search” directory-path

grep [option] "text string to search” directory-path

grep -r "text string to search” directory-path

grep -r -H "text string to search” directory-path

egrep -R "word-1|word-2” directory-path

egrep -w -R "word-1|word-2” directory-path

答案 15 :(得分:14)

希望这有帮助...

扩展grep以在输出中提供更多信息,例如,获取文本所在文件中的行号可以按如下方式完成:

find . -type f -name "*.*" -print0 | xargs --null grep --with-filename --line-number --no-messages --color --ignore-case "searthtext"

如果你知道文件类型是什么,你可以通过指定要搜索的文件类型扩展来缩小搜索范围,在本例中为.pas.dfm个文件:

find . -type f \( -name "*.pas" -o -name "*.dfm" \) -print0 | xargs --null grep --with-filename --line-number --no-messages --color --ignore-case "searchtext"

选项的简短说明:

    {li> .find中指定当前目录。
  1. -name&#34; *.*&#34; :对于所有文件 (-name&#34; *.pas&#34; -o -name&#34; *.dfm&#34;):仅*.pas OR *.dfm个文件,或者使用-o
  2. 指定
  3. -type f指定您正在查找文件
  4. {li> -print0--null|find(管道)的另一端是关键的,将文件名从grep传递到xargs嵌入在{{1}}中,允许在文件名中传递带有空格的文件名,允许grep将路径和文件名视为一个字符串,而不是在每个空格中将其分解。

答案 16 :(得分:14)

尝试:

find / -type f -exec grep -H 'text-to-find-here' {} \;

将搜索所有文件系统,因为/是根文件夹。

对于家庭文件夹使用:

find ~/ -type f -exec grep -H 'text-to-find-here' {} \;

对于当前文件夹使用:

find ./ -type f -exec grep -H 'text-to-find-here' {} \;

答案 17 :(得分:14)

Silver Searcher是一个了不起的工具,但ripgrep可能会更好。

它可以在Linux,Mac和Windows上运行,几个月前在Hacker News上编写了(这里有一个链接到Andrew Gallant的Blog,它有一个GitHub链接):

Ripgrep – A new command line search tool

答案 18 :(得分:14)

简单的find可以很方便。在~/.bashrc文件中将其别名:

alias ffind find / -type f | xargs grep

启动新终端并发出:

ffind 'text-to-find-here'

答案 19 :(得分:14)

find /path -type f -exec grep -l "string" {} \;

评论解释

find是一个命令,可以让您在给定路径的子目录中查找文件和其他对象,如目录和链接。如果您没有指定文件名应该满足的掩码,它将枚举所有目录对象。

-type f specifies that it should proceed only files, not directories etc.
-exec grep specifies that for every found file, it should run grep command, passing its filename as an argument to it, by replacing {} with the filename

答案 20 :(得分:13)

我写了Python script,它做了类似的事情。这就是人们应该如何使用这个脚本。

./sniff.py path pattern_to_search [file_pattern]

第一个参数path是我们将递归搜索的目录。第二个参数pattern_to_search是我们要在文件中搜索的正则表达式。我们使用Python re库中定义的正则表达式格式。在此脚本中,.也匹配换行符。

第三个参数file_pattern是可选的。这是另一个适用于文件名的正则表达式。仅考虑与此正则表达式匹配的那些文件。

例如,如果我想搜索包含py后跟单词Pool(的扩展名Adaptor的Python文件,请执行以下操作,

./sniff.py . "Pool(.*?Adaptor"  .*py
./Demos/snippets/cubeMeshSigNeur.py:146 
./Demos/snippets/testSigNeur.py:259 
./python/moose/multiscale/core/mumbl.py:206 
./Demos/snippets/multiComptSigNeur.py:268 

瞧,它会生成匹配文件的路径和找到匹配项的行号。如果找到多个匹配项,则每个行号都将附加到文件名中。

答案 21 :(得分:12)

使用:

grep -c Your_Pattern *

这将报告当前目录中每个文件中有多少个模式副本。

答案 22 :(得分:11)

grep是你实现这一目标的好朋友。

grep -r <text_fo_find> <directory>

如果您不关心要查找的文本的情况,请使用

grep -ir <text_to_find> <directory>

答案 23 :(得分:11)

有一个ack工具可以完全满足您的要求。

http://linux.die.net/man/1/ack

ack -i search_string folder_path/*

您可以忽略-i进行区分大小写搜索

答案 24 :(得分:11)

以前的所有答案都建议grep并找到。但还有另一种方法:使用Midnight Commander

这是一个免费的实用程序(30岁,经过时间证明),它是视觉上没有GUI。它有很多功能,查找文件只是其中之一。

答案 25 :(得分:11)

要搜索字符串并使用搜索字符串输出该行:

for i in $(find /path/of/target/directory -type f); do grep -i "the string to look for" "$i"; done

e.g:

for i in $(find /usr/share/applications -type f); \
do grep -i "web browser" "$i"; done

显示包含搜索字符串的文件名:

for i in $(find /path/of/target/directory -type f); do if grep -i "the string to look for" "$i" > /dev/null; then echo "$i"; fi; done;

e.g:

for i in $(find /usr/share/applications -type f); \
do if grep -i "web browser" "$i" > /dev/null; then echo "$i"; \
fi; done;

答案 26 :(得分:10)

避免麻烦并安装ack-grep。它消除了许多许可和报价问题。

apt-get install ack-grep

然后转到要搜索的目录并运行下面的命令

cd /
ack-grep "find my keyword"

答案 27 :(得分:10)

以下命令适用于此方法:

find ./ -name "file_pattern_name"  -exec grep -r "pattern" {} \;

答案 28 :(得分:10)

您可以使用以下命令,因为您不想要文件名但想要从所有文件中搜索。 这是我正在捕获“TEXT”表单所有日志文件,确保不打印文件名

grep -e TEXT *.log | cut -d' ' --complement -s -f1

与其他选项相比,使用-e选项的grep非常快,因为它适用于PATTERN匹配

答案 29 :(得分:10)

我很着迷于grep如何使用&#39; rl&#39;

grep -rl 'pattern_to_find' /path/where/to/find

-r to find recursively file / directory inside directories..
-l to list files matching the 'pattern'
  

使用&#39; -r&#39;没有&#39; l&#39;查看文件名后跟发现模式的文本

grep -r 'pattern_to_find' /path/where/to/find

工作得很完美..

希望它有所帮助!

答案 30 :(得分:10)

试试这个:

find . | xargs grep 'word' -sl

答案 31 :(得分:8)

如果您严格要使用find,则:

find /path/to/somewhere/ -type f -exec grep -nw 'textPattern' {} \;

find + grep

1。使用find搜索文件, 2.然后对所有这些文件执行grep

可以在一个命令中组合如下:

find /path/to/somewhere/ -type f -exec grep -nw 'textPattern' {} \;

  • 如果只想-name Pattern仅使用某些文件,请使用grep

    find /path/to/somewhere/ -type f -name \*.cpp -exec grep -nw 'textPattern' {} \;

这可以让您find来查找文件。您可以使用它,并使用find的不同选项来改善或缩小文件搜索范围。

答案 32 :(得分:7)

当有许多潜在的匹配要筛选时,

find xarg s是首选。它的运行速度比其他选项慢,但它始终有效。正如一些人所发现的,xargs默认情况下不处理带有嵌入空格的文件。您可以通过指定-d选项来克服此问题。

这是@ RobEarl的答案,增强了所以它处理带空格的文件:

find / -type f | xargs -d '\n' grep 'text-to-find-here'

这是@ venkat的答案,同样增强了:

find . -name "*.txt" | xargs -d '\n' grep -i "text_pattern"

这是@Gert van Biljon的回答,同样得到了提升:

find . -type f -name "*.*" -print0 | xargs -d '\n' --null grep --with-filename --line-number --no-messages --color --ignore-case "searthtext"

这是@ LetalProgrammer的答案,同样增强了:

alias ffind find / -type f | xargs -d '\n' grep

这是@Tayab Hussain的答案,同样增强了:

find . | xargs -d '\n' grep 'word' -sl

答案 33 :(得分:7)

试试这个:

find / -type f -name "*" -exec grep -il "String_to_search" {} \;

或者

for i in /*;do grep -Ril "String_to_search" $i;done 2> /dev/null

答案 34 :(得分:7)

您可以使用以下命令从文件中查找特定文本:

cat file | grep 'abc' | cut -d':' -f2

答案 35 :(得分:7)

使用:

grep -Erni + "text you wanna search"

该命令将在当前目录的所有文件和目录中递归搜索并打印结果。

注意:如果你的grep输出没有着色,你可以使用grep =&#39; grep --color = always&#39;来改变它。 shell源文件中的别名。

答案 36 :(得分:7)

如果您有一组始终要检查的文件,则可以为其路径添加别名,例如:

alias fd='find . -type f -regex ".*\.\(inc\|info\|module\|php\|test\|install\|uninstall\)"'

然后您可以像这样过滤列表:

grep -U -l $'\015' $(fd)

将fd列表筛选出包含CR模式的文件。

我发现别名我感兴趣的文件可以帮助我创建更简单的脚本,然后总是试图记住如何获取所有这些文件。递归的东西也可以工作,但迟早你将不得不面对清除特定的文件类型。这就是为什么我只是找到我感兴趣的所有文件类型的原因。

答案 37 :(得分:7)

作为Peter in the previous answer mentioned,之前的所有答案都提示grep并找到。

但是有一种更复杂的方式使用Gnome Commander和完美的 GUI 以及自2001年以来的大量选项,找到文件只是其中之一。它也是一种免费的实用工具,经过时间证明。

答案 38 :(得分:6)

试试这个

find . -type f -name some_file_name.xml -exec grep -H PUT_YOUR_STRING_HERE {} \;

答案 39 :(得分:6)

尝试一下

# grep -Ril "text-to-find-here" /

1. -i, --ignore-case Perform case insensitive matching. By default, grep is case sensitive.

2. -R, -r, --recursive  Recursively search subdirectories listed.

3. -l, Only the names of files containing selected lines are written to standard output.  

4. / stands for starting at the root of your machine.

答案 40 :(得分:5)

GUI搜索替代 - 桌面使用:

- 因为问题不是要求命令

Searchmonkey :高级文件搜索工具,无需使用正则表达式索引系统。图形等效于find / grep。适用于Linux(Gnome / KDE / Java)和Windows(Java) - 开源GPL v3

功能

  • 高级正则表达式
  • 结果显示在上下文中
  • 搜索包含文字
  • 面板显示包含文本的行
  • 新2018年更新
  • <子>等

下载 - 链接:

<强>屏幕截图:

Enter image description here

答案 41 :(得分:5)

另请参阅The Platinium Searcher,它与The Silver Searcher类似,并且用Go编写。

示例:

pt -e 'text to search'

答案 42 :(得分:2)

  

我正在尝试找到一种方法来扫描整个Linux系统,以查找包含特定文本字符串的所有文件。 ...这接近正确的方法吗?如果没有,我应该怎么办? ...这种在文件中查找文本字符串的功能对于我正在做的某些编程项目非常有用。

虽然由于脚本或其他实用程序的神秘破坏风险,所以永远不要用其他程序替换(或别名)系统命令,但是如果您手动运行文本搜索或从自己的脚本或程序运行文本搜索,则应考虑多次搜索大量文件时最快的适用程序。在对您描述的用例进行了几次使用之后,可以恢复花费10分钟至半小时的时间来安装和熟悉 better 实用程序。

提供“ Feature comparison of ack, ag, git-grep, GNU grep and ripgrep”的网页可以帮助您确定哪个程序可以提供所需的功能。

  • Andrew Gallant的博客声称:“ ripgrep is faster than {grep, ag, git grep, ucg, pt, sift}”(其他一些人也有这样的说法,这就是为什么功能比较会有所帮助的原因)。特别感兴趣的是他关于regex implementations和陷阱的部分。

    以下command搜索所有文件,包括隐藏文件和可执行文件:

    $ rg -uuu foobar

  • The Silver Searcher(ag)声称它比Ack快5-10倍。在其他一些答案中建议使用此程序。 GitHub的出现不如ripgrep的最新,而且提交和分支的发布明显较少,发布的次数也较少,因此很难根据这些统计数据得出绝对的主张。 short version:ripgrep速度更快,但是学习曲线很小,不会被差异所困扰。

  • 那么,您可能猜到了platinum searcher是什么。宣称:它比ack快3到5倍的代码搜索速度,但是它的速度与Silver搜索器相同。它用GoLang编写,可以搜索UTF-8,EUC-JP和Shift_JIS文件;如果有更大的兴趣。 GitHub既不是最近的也不是活跃的。 GoLang本身具有快速而强大的正则表达式,但如果铂金搜索者对用户兴趣更好,则最好选择它。

对于速度和功率索引的查询语言(例如ElasticSearchSolr)的组合可以长期使用investment that pays off,但如果您想快速简单地替换grep,则不可以。 OTOH都具有可以从您编写的任何程序中调用的API,从而为程序添加了强大的搜索功能。

虽然可以生成外部程序,执行搜索,拦截其输出并对其进行处理,但调用API是提高功能和性能的一种方法。

  

This question was protected Aug 6 '15 at 19:34 with this caution:
  我们正在寻找能提供一些解释和上下文的长答案。不要仅仅给出一个答案。解释为什么你的答案是正确的,最好是引用。

虽然一些答案提出了完成搜索的替代方法,但除了“免费”,“更快”,“更复杂”,“大量功能”等外,它们没有解释为什么。不要尝试出售它,只需告诉我们“为什么您的答案正确”即可。我试图教如何选择最适合用户的内容,以及为什么。这就是为什么在已经有很多答案的情况下,我还要提供另一个答案的原因。否则,我会同意已经有了很多答案。我希望我能带来很多新东西。

答案 43 :(得分:1)

grep "text-to-find-here" file_name

grep "text-to-find-here" directory_path/*

如果要搜索当前目录:

grep "text-to-find-here" *

答案 44 :(得分:1)

我的用例是找到我以前写的 Python 代码,该代码以特定方式编写 jsonlines。我知道 jsonl 将是函数名称的一部分,而 to_json 将出现在函数体中,但不会出现太多其他内容。

尽管有 50 个答案,但在同一个文件(无论是否在同一行)中找到多个字符串仍未得到答复。希望处于相同情况的其他人能找到这个答案并且可以重用这个片段。

grep 中的 -q 表示安静。不打印任何内容,只设置返回值。因此 -print 在最后。每个 -exec 仅在前一个成功时运行。因此,如果您有很多文件,那么考虑一下可以消除您不感兴趣的文件的模式是值得的。

find . -type f -name "*.py" \
  -exec grep -q -e 'to_json' {} \; \
  -exec grep -q -e 'def\s.*jsonl' {} \; \
  -print

答案 45 :(得分:1)

您的命令是正确的。只需将-l添加到grep。

find / -type f -exec grep -l 'text-to-find-here' {} \;

答案 46 :(得分:0)

grep -lrnw '/root/Desktop/ipozal' -e 'geolocation'

答案 47 :(得分:0)

我尝试了下面的grep命令,该命令有助于在/etc/yum.repos.d的存储库中搜索内容

grep . -Ril -e 'texttoSearch' /etc/yum.repos.d

答案 48 :(得分:0)

尝试此命令。它将为您提供包含您输入的模式的文件。

sudo grep -inr "your-pattern" /

此处: i-忽略大小写区别,以使仅大小写不同的字符彼此匹配。

n-确保实际行内容的第一个字符位于制表位上,以使制表符的对齐看起来正常。

r-仅在命令行上,才按照符号链接递归地读取每个目录下的所有文件。请注意,如果未提供文件操作数,则grep将搜索工作目录。

答案 49 :(得分:0)

您可以使用ripgrep,它将默认使用项目的.gitignore文件

ripgrep

抑制Permission denied错误

rg -i rustacean 2> /dev/null

这会将stderr(标准错误输出)重定向到/dev/null

答案 50 :(得分:0)

如果您在 git 存储库中,则可以使用:

git grep something

答案 51 :(得分:0)

您也可以使用awk

awk '/^(pattern)/{print}' /path/to/find/*

pattern是您要在文件中匹配的字符串

答案 52 :(得分:-1)

查找任何名称为“ .kube / config”的文件,并且内容包括eks_use1d

/# locate ".kube/config"|xargs -i sh -c 'echo \\n{};cat {}|grep eks_use1d'

答案 53 :(得分:-1)

请根据需要自定义以下命令,并从文件中递归查找任何字符串。

grep -i hack $(find /etc/ -type f)