1

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

我已经验证我的当前目录中确实有几个.h文件.cpp。我做错了什么还是这可能是bashor中的错误ls

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

4

3 回答 3

5

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

$ ls *.@(h|cpp)

这匹配一些东西,后跟一个句点,后跟“h”或“cpp”

于 2012-06-08T13:33:56.477 回答
4

你应该能够做到ls *h *cpp

于 2012-06-08T13:12:32.967 回答
3

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

于 2012-06-08T13:11:50.073 回答