【发布时间】:2013-05-09 09:36:30
【问题描述】:
总的来说,我对 globbing 非常缺乏经验。如何编写一个匹配文件名不是以“ab”开头但仍需要至少为 2 的文件名的 glob 模式?即“以除“ab”以外的 2 个字母字符串开头”这是一个家庭作业问题,只允许使用基本的 bash glob,并且必须与“echo
注意:问题逐字是
当前目录中的(非隐藏)文件,其名称至少包含两个字符,但不以 ab 开头。
印在纸上。我很确定我没有误解任何东西。要求是
对于以下每个文件搜索条件,提供匹配的通配符模式 标准。您在每种情况下的答案都应该是具有以下格式的文本文件:
echo <pattern>
我目前的尝试是echo {a[!b]*,[!a.]?*},但不知何故,自动评分器实际上在没有人工干预的情况下自动针对测试用例运行您的文件。
【问题讨论】:
-
由于问题的奇怪表述,我怀疑你的老师正在寻找答案
[^a][^b]*。这是一个常见的错误,答案中给出了几个正确(但不一定是非基本)的解决方案。 -
@thatotherguy,我认为
[^a]?*是一个更好的答案,反正错误更少 -
@perreal:他知道这一点,但他也假设(像我一样)这个问题的答案实际上并不存在,并提出了一些老师可能的误解知道答案应该是什么,这实际上是错误的。
-
通过针对测试用例运行 glob 来自动进行评分。一个程序标记您的程序(这是滑铁卢大学,机器人接管开始 xD)。我当前的 glob 是 {a[!b]*,[!a.]?*},我认为它非常聪明,但得到 0/1。我会更新我的帖子。
-
@EricDong:当没有以 a + a 非 b 字符开头的文件时,它仍然会返回
a[!b]*。