使用 bash 从交换中按字节签名获取文件

Get files by bytes signature from swap using bash

我有一个带有随机字节数据的大文件(交换文件的转储)。我需要让文件以十六进制的精确字节开头和结尾,这是我知道的。例如 jpeg 以 FF D8 FF E0 00 10 4A 46 49 46 开头并以 FF D9 结束。此外,我需要使用 bash 脚本来执行此操作。你能给一些建议如何做到这一点吗?

基本建议是:不要为此使用 bash。虽然有可能,但 bash 不是用于此的工具。你最好编写简短的 C 代码。

如果真的坚持在bash,

while LANG=C IFS= read -r -d '' -n 1 char ;do
    #do your test for the next byte
done

逐个读取字节。

或者,您可以使用 od -x 的输出通过一些循环。

但这仅在您必须使用 bash 时才会如此。

我不会为此使用 Bash。如果你必须使用bash,那么也许试试正则表达式?

JPG_REGEX='FF D8 FF E0 00 10 4A 46 49 46 [\w|\s]+ FF D9' #this matches any jpeg file

echo <name of your file here> | grep -P -q $JPG_REGEX

查看