我必须编写一个脚本,在一个目录中查找所有可执行文件。所以我尝试了几种方法来实现它,它们确实起了作用。但我想知道是否有更好的方法来做到这一点
这是我的第一个方法:
ls-Fla|grep\*$
这很好,因为-F标志为我做了这项工作,并在每个可执行文件中添加了一个星号,但假设我不喜欢星号
这是第二种方法:
ls-la|grep-E^-.{2}x
这也很好,我想要一个破折号作为第一个字符,然后我对接下来的两个字符不感兴趣,第四个字符必须是x
但是需求中有一点模糊,因为我不知道是否需要检查用户、组或其他可执行权限。因此,这将起作用:
ls-la|grep-E^-.{2}x\| ^-.{5}x\| ^-.{8}x
所以我正在测试第四、第七和第十个字符是x
现在,我真正的问题是,有没有更好的解决方案,使用ls和grep与regex结合来表示:
我只想grep那些文件,由ls-la
您需要使用ls吗?您可以使用“查找”执行相同的操作:
查找-maxdepth 1-perm-111-f型
将返回当前目录中的所有可执行文件。删除-maxdepth标志以遍历所有子目录
您可以尝试此terribleness,但它可能会匹配包含类似权限的字符串的文件
ls-lsa | grep-E“[d\-]([rw\-]{2})x{1,3}”