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

时间:2012-06-08 13:08:08

标签: bash glob ls

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

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

我已经确认当前目录中确实存在多个.h.cpp个文件。我做错了什么,或者这可能是bashls中的错误?

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

3 个答案:

答案 0 :(得分:5)

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

$ ls *.@(h|cpp)

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

答案 1 :(得分:3)

您应该只能ls *h *cpp

答案 2 :(得分:2)

在这种情况下,我认为你不需要复杂的通配:只需尝试echo *.h *.cpp