1

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

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

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

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

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

4

2 回答 2

6

您可以使用 find 实用程序,这比解析 ls 的输出更强大。

例如,列出当前目录中为用户设置了执行位的文件。

find . -maxdepth 1  -type f -perm -u=x
于 2013-02-04T12:40:27.223 回答
1
ls -F | grep -E "[*]\>"

这不会达到您的预期,因为*它不是“单词”字符,并且在没有意义之后立即寻找词尾边界。

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

*将产生所有以指定结尾的行。这是有道理的。

您应该注意@Adam 的建议:您不应该解析ls.

于 2013-02-04T12:57:45.430 回答