使用 grep 仅输出包含模式的文件名(不带行输出)

ecj*_*cjb 2 grep regular-expression file-search

我想列出包含模式的文件,\n而不输出包含模式的行。\xc2\xa0\nI\xc2\xa0假设可以\xc2\xa0使用grep.\xc2\xa0\nHow我应该grep在这个意义上使用吗?\xc2\xa0\n例如,以下命令\ngives所有文件中包含“stringpattern”(不区分大小写)的所有行.txt。\xc2\xa0\nI\xc2\xa0只想有文件名(\xc2\xb1 行号)。

\n
grep -ni stringpattern *.txt\n
Run Code Online (Sandbox Code Playgroud)\n

理想情况下,如果\xc2\xa0字符串/模式在\xc2\xa0一个\xc2\xa0文件中出现多次,\nI\xc2\xa0希望\xc2\xa0对该文件有多行\xc2\xa0输出。

\n

yar*_*arl 5

如果您只需要匹配的文件:

grep -lie pattern -- *.txt
Run Code Online (Sandbox Code Playgroud)

我认为您不能仅使用 grep 来仅打印文件和行号,因为使用 option -n,它会在每一行“file:line:match”上输出。如果文件名不包含:也不包含换行符,您可以通过管道将其传递到cut仅获取您想要的内容。

grep -nie pattern -- /dev/null *.txt | cut -d: -f 1,2
Run Code Online (Sandbox Code Playgroud)

如果仅扩展为一个文件名,则/dev/null需要此选项,否则将不会打印文件名。使用 或 兼容的 GNU 实现,您可以使用/代替以确保始终打印文件名。*.txtgrepgrep-H--with-filename