在 Linux 上的多个图像中搜索特定的给定十六进制字符串
Searching for a specifc given hex string in multiple images on Linux
我正在研究图像处理,我想知道是否可以在各种图像中搜索特定的十六进制 string/byte 数组。如果它给我一个包含该特定字符串的图像列表,那就太好了。基本上是 grep -r "" 的作用。由于某种原因,grep 无法完成这项工作。我不熟悉字符串。我确实看过 "man strings",但没什么帮助。无论如何,我想在同一文件夹中的多个图像中寻找特定的十六进制字符串,例如“0002131230443”(或者甚至是特定的字节数组,即 base64 字符串)。任何帮助将不胜感激。
我发现这段代码使用 xxd 和 grep 完全符合我的要求。请在下面找到命令:
xxd -p /your/file | tr -d '\n' | grep -c '22081b00081f091d2733170d123f3114'
仅供参考:
如果内容匹配,它将 return 1,否则为 0。
xxd -p 将文件转换为纯十六进制转储,tr -d '\n' 删除 xxd 添加的换行符,grep -c 计算匹配的行数。
有谁知道如何使用 bash 脚本在特定目录中 运行 上面的代码。我有大约 400 张图像,如果所有 400 张图像都具有该特定字符串,我希望它只 return 400(即字符串匹配计数)。我在下面找到了这段脚本代码,但它 运行 一遍又一遍地使用相同的代码 400 次 return 每次都是 0 或 1:
#!/bin/bash
FILES=/FILEPATH/*
for f in $FILES
do
echo "PROCESSING $f FILES"
echo "-------------------"
XXD -u $f | grep ABCD
echo "-------------------"
done
谢谢大家。
Plasma33
使用 GNU grep:
#!/bin/bash
files=/FILEPATH/*
for f in $files
do
grep -m 1 -P '\x22\x08\x1b\x00' < "$f"
done | wc -l
我正在研究图像处理,我想知道是否可以在各种图像中搜索特定的十六进制 string/byte 数组。如果它给我一个包含该特定字符串的图像列表,那就太好了。基本上是 grep -r "" 的作用。由于某种原因,grep 无法完成这项工作。我不熟悉字符串。我确实看过 "man strings",但没什么帮助。无论如何,我想在同一文件夹中的多个图像中寻找特定的十六进制字符串,例如“0002131230443”(或者甚至是特定的字节数组,即 base64 字符串)。任何帮助将不胜感激。
我发现这段代码使用 xxd 和 grep 完全符合我的要求。请在下面找到命令: xxd -p /your/file | tr -d '\n' | grep -c '22081b00081f091d2733170d123f3114'
仅供参考: 如果内容匹配,它将 return 1,否则为 0。
xxd -p 将文件转换为纯十六进制转储,tr -d '\n' 删除 xxd 添加的换行符,grep -c 计算匹配的行数。
有谁知道如何使用 bash 脚本在特定目录中 运行 上面的代码。我有大约 400 张图像,如果所有 400 张图像都具有该特定字符串,我希望它只 return 400(即字符串匹配计数)。我在下面找到了这段脚本代码,但它 运行 一遍又一遍地使用相同的代码 400 次 return 每次都是 0 或 1:
#!/bin/bash
FILES=/FILEPATH/*
for f in $FILES
do
echo "PROCESSING $f FILES"
echo "-------------------"
XXD -u $f | grep ABCD
echo "-------------------"
done
谢谢大家。
Plasma33
使用 GNU grep:
#!/bin/bash
files=/FILEPATH/*
for f in $files
do
grep -m 1 -P '\x22\x08\x1b\x00' < "$f"
done | wc -l