使用bash列出*.h和*.cpp

Agn*_*ian 1 bash ls glob

bash在Fedora 16上使用版本4.2.28.我有extglob选项设置.我试图列出所有匹配*.h*.cpp使用的文件,ls *(h|cpp)但该命令返回以下内容:

[agnel@damien cadcore]$ ls *(h|cpp)
ls: cannot access *(h|cpp): No such file or directory
Run Code Online (Sandbox Code Playgroud)

我已经验证我当前目录中确实有几个.h.cpp文件.我做错了什么,或者这可能是一个错误bashls

更新:感谢您的回答.使用*.h *.cpp做我需要的.但是,我仍然想知道为什么extglob不像我预期的那样工作.

che*_*ner 5

扩展的glob *(pattern-list)匹配以下模式列表的0次或更多次出现.它与选项列表中的某个字符串后跟的任意字符串不匹配.你要:

$ ls *.@(h|cpp)
Run Code Online (Sandbox Code Playgroud)

这匹配一些东西,然后是一段时间,然后是"h"或"cpp"