如何才能在 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