我需要从/ bin中找到所有可执行文件。如何使用
find . -executable
以及如何检查文件是否是脚本(例如,sh,pl,bash)?
答案 0 :(得分:4)
#!/bin/bash
for file in `find /bin` ; do
if [ -x $file ] ; then
file $file
fi
done
甚至做得更好
find /bin -type f -perm +111 -print0 | xargs -0 file
答案 1 :(得分:1)
find /bin/ -executable
返回/bin/
目录中的所有可执行文件。
要过滤扩展,可以使用-name
个标记。例如,find /bin/ -executable -name "*.sh"
返回sh
- 脚本。
<强> UPD 强>:
如果file不是二进制文件且没有扩展名,则可以从shabang中找出它的类型。
例如find ~/bin/ -executable | xargs grep --files-with-matches '#!/bin/bash'
返回~/bin/
目录中的文件,其中包含#!/bin/bash
。
答案 2 :(得分:1)
查找所有脚本shell
find . -type f -executable | xargs file -i | grep x-shellscript | cut -d":" -f1
查找所有可执行文件
find . -type f -executable | xargs file -i | grep x-exec | cut -d":" -f1
查找所有共享库
find . -type f -executable | xargs file -i | grep x-sharedlib | cut -d":" -f1
答案 3 :(得分:0)
这适用于我和想分享......
find ./ -type f -name "*" -exec sh -c '
case "$(head -n 1 "$1")" in
?ELF*) exit 0;;
MZ*) exit 0;;
#!*/ocamlrun*)exit0;;
esac
exit 1
' sh {} \; -print