【发布时间】:2017-01-12 21:02:00
【问题描述】:
信息和问题
我现在正在学习 linux 命令,只是在 bash 中练习 grep 命令。
我想匹配名称以字符“a”开头的每个文件......非常简单的要求......据我所知,正则表达式应该类似于a.*,但它不像我想的那样工作。
有些文件名应该匹配不匹配。
我的命令
我在 Ubuntu Mate 16.04 VirtualBox 终端中输入了命令。 我创建了一个名为 test 的文档。在测试文档中,我得到了三个文件,
a.txta1.txta2.txt
以下是我使用 grep 的命令。
ls -a | grep -E -e a.*
但是输出很简单
a.txt
我认为.* 应该表示任何字符的任意数字。所以a1.txt 和a2.txt 应该匹配正则表达式,但它不起作用。
但是,如果我尝试了
ls -a | grep -E -e ^a.*
ls -a | grep -E -e a.+
两个命令都按我的预期工作,所有文件名都匹配。
a.txt
a1.txt
a2.txt
我不知道出了什么问题?
我尝试过的
我搜索了问题,有一个question和我的很相似,但是问题是关于扩展的grep和基本的,这绝对不是我的情况。
【问题讨论】:
-
不是答案:使用
find -
请考虑对代码使用代码语法(如四个文字空格,或编辑器中的
{}按钮),而不是滚动您自己的引用文本语法和粗体的组合。 -
另外,我希望你不要实际上打算将它与
ls一起使用,should not be used programatically。 -
不知道为什么我被否决了?错误的解释是要发生的,OP确实明确说
grep,但他的要求需要find?对此有什么合理的解释吗? -
PS:shellcheck自动识别this issue。