grep 可以用于搜索名称中包含一些字符串的文件吗?

Tim*_*Tim 1 grep search files

我知道grep只能用于搜索内容中包含字符串的文件。

它可以用于搜索名称中带有字符串的文件吗?我阅读了联机帮助页,但不这么认为。

grep发音为 [gri:p] 或 [grep](在 IPA 符号中)?我读的是前者。

dev*_*ull 10

您似乎在寻找find

find . -type f -name "*foo*"
Run Code Online (Sandbox Code Playgroud)

foo在当前目录和子目录中查找包含在名称中的文件名。

find . -maxdepth 1 -type f -name "*foo*"
Run Code Online (Sandbox Code Playgroud)

将查找foo仅包含在当前目录中的文件名。

  • @Tim 您必须了解`grep` 只查看内容,无论是通过打开文件还是在标准输入中。如果您希望 grep 查看文件名,则必须将文件名放入其内容中。将文件名列表存储在文件中或将其传递给 grep 的标准输入。两种方法都不推荐 - 这就像在螺丝上使用锤子一样,即错误的工具用于错误的工作。 (2认同)

小智 5

使用find生成的文件名列表,然后grep对其进行解析:

find . | grep 'stack[oO0]verfl[oO0]w'
Run Code Online (Sandbox Code Playgroud)

除非您有一个文件系统,其中文件名列表本身就是一个文件,否则我不知道如何grep单独做到这一点。

  • 但是你应该加上 `find 。-name 'stack[oO0]verfl[oO0]w'` 效率会更高一些,因为它不需要运行两个进程。(有一个小的区别,因为 `grep` 变体将匹配完整的路径名,而不仅仅是文件名。) (3认同)