【发布时间】:2013-03-14 09:31:03
【问题描述】:
这是大学时提出的问题。
问题是:列出testfiles 文件夹中所有没有扩展名的文件/目录。
给出的正确答案是这样的:
ls testfiles | grep -v "\."
现在,只是为了了解ls 正则表达式的工作原理,有人可以解释我只使用ls 会怎样吗?此外,我将不胜感激任何也使用美元符号$ 的示例,以明确说明名称以.[a-z] 结尾。
任何帮助,非常感谢。
还有一件事!这个问题的另一个答案是使用:
ls testfiles | grep "^[^.]*$"
这是怎么读的?我这样读^[^.]*$:
^ -> does not contain
[^.] -> starts with a dot
* -> repeated zero or more times
$ -> till the end
我希望有人对此进行纠正... 谢谢!
【问题讨论】:
-
我认为你不能只使用
ls。 -
ls使用扩展的 glob 语法,而不是正则表达式。看看this 的想法。 -
[^.]作为正则表达式匹配任何单个字符除了句点。 -
您的正则表达式分析不太正确,开头的
^是开始锚点。因此,该模式实际上匹配任意数量的从头到尾不是点的字符。 -
你在“|”处失去了我。如果要求是“仅 ls”,那么 grep 在那里做什么?