Bash

如何查找執行檔類型?

  • February 22, 2022

我想從核心的角度找到可執行的文件類型。據我所知,Linux 上的所有執行檔都是 ELF 文件。因此我嘗試了以下方法:

find * | file | grep ELF

但是,這不起作用;有人有其他想法嗎?

稍後編輯:只有這個做 jan 需要的:謝謝惠更斯;

find . -exec file {} \; | grep -i elf

對於有限(例如嵌入式)系統上的那些不使用fileand的替代解決方案:readelf

find $WHERE -type f -exec hexdump -n 4 -e '4/1 "%2x" " {}\n"'  {} \; | grep ^7f454c46

基本上,我們輸出前四個字節hexdump並將它們用作簽名。然後我們可以使用它的簽名grep 類型為ELF7f454c46的所有文件。

或者,由於刪除字元7f是,而, ,字節分別是, ,字元,我們也可以使用:45``4c``46``E``L``F

find $WHERE -type f -exec hexdump -n 4 -e '4/1 "%1_u" " {}\n"'  {} \; | grep ^delELF

此外,您可以在這種情況下使用head代替:hexdump

find $WHERE -type f -exec head -c 4 {} \; -exec echo " {}" \;  | grep ^.ELF

引用自:https://unix.stackexchange.com/questions/40063