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