如何在 Linux 上使用 grep 只显示文件名如何在 Linux 上使用 grep 只显示文件名如何在 Linux 上使用 grep 只显示文件名如何在 Linux 上使用 grep 只显示文件名
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 grep 只显示文件名

grep 是一个用于搜索文本文件的 Linux 实用程序。默认情况下,它会打印出搜索结果,但它也可用于匹配和打印包含搜索结果的文件名,这在与其他脚本连接时非常有用。

使用 grep 打印文件名

grep 通常与 bash 脚本中的其他命令一起用作通用文本搜索实用程序。但是,默认情况下,它不会打印有关文件名的任何信息,如果您将输出传递给另一个实用程序,您可能需要这些信息。

如果您想要匹配的文件列表,您可以使用带有 -l 标志的 grep, 它将列出文件名而不是匹配:

grep -l foo ./*

这类似于 -H 标志,它将输出包含文件名和匹配行的响应。但是,使用 -l,它将仅打印文件名,为您提供包含搜索字符串的文件列表。

您还可以使用大写 -L 标志 执行相反操作:打印所有不包含匹配字符串的文件。

grep -L baz ./*

修剪文件路径

默认情况下,-l 标志将打印带有预先附加的相对文件路径的文件。如果您只想要实际的文件名,则可以使用 basename 实用程序修剪文件路径。这将需要通过 xargs 传递输入,但效果很好:

grep -l foo ./* | xargs -L 1 basename

请记住,grep -r 将递归搜索,如果您将其与 basename 一起使用,则响应可能包含不在当前直接路径中的具有修剪路径的文件。

使用 grep 和 find 命令

grep 还可以与 find 命令的额外搜索实用程序配合使用。例如,您可以将它与 find 命令一起使用以搜索目录中的每个文本文件并轻松运行 grep 搜索:

find . -iname "*txt" -exec grep foo {} ;

或者将它与 -l 标志一起使用以列出文件名:

find . -iname "*txt" -exec grep -lH foo {} ;
©2015-2025 艾丽卡 support@alaica.com