从 shell 中,我想递归搜索目录中给定的 glob 模式。但我想在我的模式中使用 set-braces-syntax:
find ~/path/to/dir -name '*.{h,m}'
在这里我想递归地查找位于给定路径下任何位置的所有文件.h
。.m
我从阅读中得知glob 文档这些使用花括号 ( ) 的“集合”模式{
称为
csh(1) 样式括号表达式
然而,我在 macOS 12.3.1 上使用 bash 和 tcsh 进行的测试表明,不支持此 set 语法find
。阅读查找手册页,我没有看到任何提到支持这种语法(也许我错过了)。
我如何使用这个特定的“set”或“csh 样式”花括号语法来实现这一点?我对使用不同语法的解决方法不太感兴趣。
答案1
csh 是“c-shell” 花括号通常被称为数组分隔符,并且不限于 csh,也不受 csh 定义,它们构成了常用表达
它们可能需要“转义”,以便您的 shell 能够正确解析它们。(它们前面有一个反斜杠,即:\{
...\}
也许这有帮助:
https://stackoverflow.com/questions/413071/regex-to-get-string-between-curly-braces