使用grep列出cwd中的所有可执行文件

时间:2013-02-04 12:37:00

标签: linux bash shell unix sh

我想使用grep列出cwd中的所有可执行文件,我使用了以下内容:

ls -F -a | grep "[*]$"

它有效,但为什么以下命令不起作用?它应该是等价的:

ls -F -a | grep -E "[*]\>"

奇怪的是,如果我使用标准字符作为结尾字母(如grep -E“[a]>”),它可以正常工作

2 个答案:

答案 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的输出。