小编典典

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

linux

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

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

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这些文件,在由…产生的一行的前十个字符中至少有一个x ls -la


阅读 1050

收藏
2020-06-07

共1个答案

小编典典

您需要使用ls吗?您可以使用find执行相同的操作:

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

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

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

ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
2020-06-07