【问题标题】:Find executable files, also those NOT marked executable查找可执行文件,以及那些未标记为可执行的文件
【发布时间】:2013-11-25 12:14:55
【问题描述】:

如何查找具有或不具有可执行权限的二进制文件?
我正在编写一个将在路径中列出的 BASH 脚本:
* 共享对象文件,
* 脚本、可执行文件、
* 静态库
它不应该显示像 .o(目标文件)这样的中间文件。

【问题讨论】:

  • 你的意思是找到所有没有执行位的二进制ELF文件?
  • 是的,nrathaus,我将文件混合在多个目录下(如树中),它们没有执行权限:-rw-rw-r--,我知道它们包含可执行文件,如何查找/列出可执行文件?
  • 欢迎来到 StackOverflow!所以。提供了一种机制,您可以通过该机制寻求帮助以修复代码中的错误。你试过什么?
  • 您好 ghoti,感谢您的热烈欢迎。我有一个 bash 脚本,我希望在目录层次结构中显示或列出实际上是可执行文件并且它们没有被标记为可执行文件的文件,如果它们也被标记为可执行文件,请让脚本列出:)
  • 嗨 gothi 和 nrathaus,我可以做些什么来获得 +1?感谢您的支持。

标签: find executable


【解决方案1】:

你可以使用:

find . -type f -print0 | xargs -0 -n 10 file -i | grep "application/x-executable"

【讨论】:

  • 顺便说一句:它取自这里:unix.stackexchange.com/questions/40063/…
  • 它显示了“一些”可执行文件,而不是全部。
  • 相对于你的路径运行,运行前转到“/”
  • 它也不会过滤掉那些已经被标记为“可执行”的文件
  • 好的,我应该列出标记为可执行的文件,例如共享对象文件 .so 和其他文件。
【解决方案2】:

file 程序根据内容报告文件类型,所以

file /bin/* | awk -F: '/executable/{print $1}'

报告 /bin 中可能/实际可执行的文件。

【讨论】:

  • 我希望列出层次结构中的所有文件。我试过:find ./ -name "*" | xargs 文件 | awk -F: '/executable/{print $1}' 无效。
  • 我尝试了查找 | xargs |刚才的awk管道,它报告的每个文件都是某种可执行格式。
  • 这些文件的文件报告是什么?看看你是否能发现一个模式,然后将 /foo/ 参数更改为 awk。
  • 嗨,arnt,我可以做些什么来获得 +1 吗?感谢您的支持。
  • 找到 . -类型 f | xargs 文件 | awk -F: '/script/{print $1} /ELF/{print $1}' 也许?
【解决方案3】:

这对我有用,我想分享...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2016-12-18
    • 2018-07-29
    • 2023-03-06
    • 2021-08-28
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多