Я занимаюсь некоторыми исследованиями в области обработки изображений, и я хотел знать, можно ли его искать для конкретного гекса-строки/байтового массива на разных изображениях. Было бы здорово, если бы он дал мне список изображений, в которых есть определенная строка. В принципе, что делает grep -r "". По какой-то причине grep не выполняет эту работу. Я не знаком со струнами. Я действительно смотрел на «человеческие струны», но это мало помогло. В любом случае, я хотел бы искать определенную шестую строку, например «0002131230443» (или даже конкретный массив байтов, например, base64), в нескольких изображениях в той же папке. Любая помощь будет высоко оценен.Поиск заданной шестнадцатеричной строки в нескольких изображениях в Linux
Я нашел этот код, который точно выполняет то, что я хочу, используя xxd и grep. Вы найдете следующую команду: xxd -p/your/file | tr -d '\ n' | grep -c '22081b00081f091d2733170d123f3114'
FYI: Он вернет 1, если содержимое соответствует, 0 else.
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
Спасибо, ребята.
Plasma33
Да, вы правы. Я имел в виду скрипт bash. Я исправил это сейчас. К сожалению, я часто являюсь пользователем Windows. – plasma33
Да, это несчастливо ;-). –