我想使用grep列出cwd中的所有可执行文件,我使用了以下内容:
ls -F -a | grep "[*]$"
它有效,但为什么以下命令不起作用?它应该是等价的:
ls -F -a | grep -E "[*]\>"
奇怪的是,如果我使用标准字符作为结尾字母(如grep -E“[a]>”),它可以正常工作
答案 0 :(得分:5)
您可以使用find实用程序,这比解析ls的输出更强大。
例如,当前目录中的列表文件,其中为用户设置了执行位。
find . -maxdepth 1 -type f -perm -u=x
答案 1 :(得分:1)
ls -F | grep -E "[*]\>"
这不符合您的期望,因为*
不是“单词”字符,并且在没有意义后立即寻找字词结束边界。
ls -F -a | grep "[*]$"
将生成所有以*
结尾的行。这是有道理的。
你应该注意@Adam's advice:你不应该解析ls
的输出。