使用 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
查看 。
我有一个带有随机字节数据的大文件(交换文件的转储)。我需要让文件以十六进制的精确字节开头和结尾,这是我知道的。例如 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
查看