我已经得到了名为的目录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
您应该使用-exec
find 命令的参数。
$ 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