bash - 使用正则表达式和“查找”命令查找 *.cpp、*.hpp、*.c 和 *h 文件
问题描述
我有以下内容:
find . -type f | grep -E '\.(cpp|hpp|c|h)$'
我怎样才能使用 find 命令来做到这一点?
解决方案
find . -type f -iname \*\.cpp -o -iname \*\.hpp -o -iname \*\.c -o -iname \*\.h
.
- 在当前目录中查找-type f
- 查找所有文件条目-iname \*\.cpp
- 查找不区分大小写的文件名,它是某个字符串(与*
反斜杠匹配,\
因此 shell 不会将其扩展为本地文件名)而不是.
反斜杠,因此它不会匹配任何字符,而不是扩展名-o
代表“或”,因此可以“或”多个条件
此外,正如 Matteo_Ragni 在他的回答中所说,您可以使用-regex
在您的情况下可能更简单的选项。
使用 GNUfind
可以使用-regex
适当的模式
find . -type f -regex '.*\.[hpp|cpp|c|h]'
正如@MatteoRagni 所建议的那样,使用这样的正则表达式可能会更好:
find -regex ".*\.\(hpp\|cpp\|c\|h\)$"
这主要取决于您find
支持的正则表达式模式类型以及默认的正则表达式模式类型。有关更多信息,请参阅正确的参数文档-regex
和-regextype
相应的正则表达式类型。
推荐阅读
- amazon-dynamodb - 存储列表
- c# - 在 .NET 中,异步方法仅是那些带有 async 关键字的方法吗?
- settimeout - 当 clearTimeout 被调用 Javascript 时,setTimeout 仍然运行
- python - 无法使用 PCF8591 读取树莓派中的有效电压输入
- typescript - Typescript 高级类型 NonFunctionPropertyNames 解释
- maven - Tomcat 部署旧版本的 webapp
- reactjs - PropTypes 在 React-DND/Styled-Components 组合中接收未定义的类型
- virtualbox - Virtualbox 启用嵌套的 vtx/amd-v 灰显
- css - Bootstrap css 块相互之间
- wordpress - 地理编码不成功,原因如下:Google Map Integration 中的 REQUEST_DENIED