我在Fedora 16上使用bash
版本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
个文件。我做错了什么,或者这可能是bash
或ls
中的错误?
更新:感谢您的回答。使用*.h *.cpp
做我需要的。但是,我仍然想知道为什么extglob
没有像我预期的那样工作。
答案 0 :(得分:5)
扩展的glob *(pattern-list)
匹配以下模式列表的0次或更多次出现。它与选项列表中的某个字符串后跟的任意字符串不匹配。你想要:
$ ls *.@(h|cpp)
这匹配一些东西,然后是一段时间,然后是" h"或" cpp"
答案 1 :(得分:3)
您应该只能ls *h *cpp
答案 2 :(得分:2)
在这种情况下,我认为你不需要复杂的通配:只需尝试echo *.h *.cpp
。