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