如何才能在 Linux 中仅找到某个目录下的可执行文件?

如何才能在 Linux 中仅找到某个目录下的可执行文件?

如何才能在 Linux 中仅找到某个目录下的可执行文件?

答案1

可以使用-perm(不推荐)或-executable(推荐,因为它会考虑 ACL)检查可执行文件。要使用该-executable选项:

find DIR -executable

如果您只想查找可执行文件而不是可搜索目录,请结合使用-type f

find DIR -executable -type f

答案2

使用 find-perm选项。这将在当前目录中查找可由其所有者、组成员或其他人执行的文件:

find . -perm /u=x,g=x,o=x

编辑:

我刚刚发现至少在 GNU find 4.4.0 中存在的另一个选项:

find . -executable

这应该会更好,因为 ACL 也被考虑在内。

答案3

我知道问题特别提到了 Linux,但由于它是 Google 上的第一个结果,所以我只想添加我正在寻找的答案。

这是在 macOS 10.12.5 上测试的:

find . -perm +111 -type f

答案4

标记为可执行的文件不必是可执行或可加载的文件或对象。

以下是我使用的:

find ./ -type f -name "*" -not -name "*.o" -exec sh -c '
    case "$(head -n 1 "$1")" in
      ?ELF*) exit 0;;
      MZ*) exit 0;;
      #!*/ocamlrun*)exit0;;
    esac
exit 1
' sh {} \; -print

相关内容