Bash
如何查找執行檔類型?
我想從核心的角度找到可執行的文件類型。據我所知,Linux 上的所有執行檔都是 ELF 文件。因此我嘗試了以下方法:
find * | file | grep ELF
但是,這不起作用;有人有其他想法嗎?
稍後編輯:只有這個做 jan 需要的:謝謝惠更斯;
find . -exec file {} \; | grep -i elf
對於有限(例如嵌入式)系統上的那些不使用
file
and的替代解決方案: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