我如何使用“grep”查找文件名而不是文件内容?
我如何使用“grep”查找文件名而不是文件内容?
已关闭。此问题不符合Stack Overflow准则。目前不接受答案。
此问题似乎与具体编程问题、软件算法或主要由程序员使用的软件工具无关。如果您认为该问题在其他Stack Exchange网站上也没有问题,则可以留下评论,解释问题可能能够得到解答的地方。
改进此问题
grep用于在文件中搜索是否有任何行与给定的正则表达式匹配。然而,我有这样的情况 - 我想编写一个正则表达式,它将匹配文件名本身(而不是文件的内容)。我将从系统的根目录运行此操作,以找到所有与正则表达式匹配的文件。
例如,如果我想找到所有以\"f\"开头并以.frm结尾的Visual Basic表单文件,我会使用正则表达式 -
"f[[:alnum:]]*\.frm"
grep可以做到这一点吗?如果不能,有没有一个能让我这样做的实用程序?
admin 更改状态以发布 2023年5月22日
例子
find-name '*FileName*'
来自手册:
find -name pattern
匹配基于文件名(去掉前导目录)的shell模式pattern。因为前导目录被删除,因此使用-name进行匹配时,文件名中不会包含斜杠,因此“-name a/b”将永远不会匹配任何内容(可能需要使用-path)。通配符(“*”,“?”和“[]”)在基本名称的开头与点号匹配(这是find-utils-4.2.2的变化,请参见下面的STANDARDS CONFORMANCE部分)。如果要忽略目录及其下的文件,请使用-prune;在-path的说明中可以看到一个示例。尽管包括Bash在内的一些shell在shell模式中赋予大括号特殊意义,但大括号却未被认为是特殊字符。文件名匹配是使用fnmatch(3)库函数执行的。别忘了用引号括起模式,以防止被shell扩展。