linux – 使用ls和grep查找可执行文件

我必须编写一个脚本来查找目录中的所有可执行文件。所以我尝试了几种方法来实现它,实际上它们是有效的。但是我想知道是否有更好的方法来做到这一点。

所以这是我的第一个方法:

ls -Fla | grep \*$

这样做很好,因为-F标志为我做了工作,并向每个可执行文件添加了一个星号,但是我说我不喜欢星号。

所以这是第二种方法:

ls -la | grep -E ^-.{2}x 

这样做也很好,我想要一个破折号作为第一个字符,那么我对下两个字符不感兴趣,第四个字符必须是一个x。

但是,要求中有一点歧义,因为我不知道我是否必须检查用户,组或其他可执行权限。所以这将工作:

ls -la | grep -E ^-.{2}x\|^-.{5}x\|^-.{8}x

所以我正在测试第四,第七和第十个字符是一个x。

现在我真正的问题是,有更好的解决方案使用ls和grep与正则表达式来说:

我想grep只有那些文件,在ls -la生成的行的十个第一个字符中至少有一个x

你需要使用ls吗?你可以使用find来做同样的事情:

find . -maxdepth 1 -perm -111 -type f

将返回当前目录中的所有可执行文件。删除-maxdepth标志遍历所有子目录。

你可以尝试这个可怕的,但它可能会匹配包含看起来像权限的字符串的文件。

ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
http://stackoverflow.com/questions/7812324/finding-executable-files-using-ls-and-grep

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:linux – 使用ls和grep查找可执行文件