递归查找可执行文件

递归查找可执行文件

我已经得到了名为的目录Test和其中的一些目录。两者Test及其里面的目录都有可执行文件。我想用 打印它们ls。我会使用这个命令。

ls -l `find Test/ -perm /u=x,g=x,o=x -type f`

这是一个好/正确/快速的命令吗?

我的解决方案是:

find Test/ -executable -type f -exec ls -l {} \;

并得到相同的结果沃克普拉代普切特里提供。

答案1

不是真的,你可以将 ls 命令与 find 结合起来,

find Test/ -type f -perm /u=x,g=x,o=x -exec ls -l {} \;

更新

实际上-executable并不等同于-perm /u=x,g=x,o=x.您可能拥有只能由组或其他人执行的文件,这些文件不会显示。

因此,取决于您的目的,如果您希望文件只能由您执行,则可以使用-executable.

答案2

无需使用-exec,因为find带有-ls标志。

$ find Test/ -perm /u=x,g=x,o=x -type f -ls

man页面:

-ls 正确;在标准输出上以 ls -dils 格式列出当前文件。块计数为 1K 块,除非设置了环境变量 POSIXLY_CORRECT,在这种情况下使用 512 字节块。有关如何处理文件名中的异常字符的信息,请参阅异常文件名部分。

答案3

您应该使用-execfind 命令的参数。

$ find Test/ -perm /u=x,g=x,o=x -type f -exec ls -l {} \;

答案4

查找可执行文件当前的登录用户

[sudo] find /path -type f -executable

或者查找是否为所有者/组/其他至少之一设置了可执行位:

[sudo] find /path -type f -perm /111

或仅可执行所有者:

[sudo] find /path -type f -perm /100

或者

[sudo] find /path -type f -perm -100

相关内容