Linux "find" 命令并突出显示文件名

Linux "find" command and highlight filename

我正在使用 Linux find 命令。它会查看所有 *.jar 文件及其内容,并在其中找到单词“foo”,但有时文件名也可能包含单词“foo”。 (即 foo.jar、foo-123.jar、myfoo.jar 等)如果是这样,我想在文件名中突出显示“foo”一词。

我有 2 个单独使用时效果很好的命令,但有没有办法将它们组合成一个语句?

find . -type f -name *.jar | grep -E --color "foo" 
find . -type f -name *.jar -exec grep -li "foo" {} \;

要查找那些文件名中包含 foo 以及 的文件,您可以执行

find . -type f -name *.jar -exec grep -li "foo" {} \; | grep -Fi foo

-exec 的结果会打印所有包含 foo 的文件的名称,随后的 grep 选择此文件的名称为 foo

使用 find 的选项 -fprint 写入进程替换。

find . -type f -name \*.jar -fprint >(grep --color foo) -exec grep -li foo {} \;

注意:引用带有通配符的参数,如 *。如果您只搜索一个简单的字符串,那么使用选项 -E 是没有用的。