Я считаю, что самый быстрый способ - сначала скопировать их локально, а затем выполнить локальный zgrep:
aws s3 cp s3: // bucket / contains / the / журналы. --recursive
Это скопирует ( cp
) все журналы в ваш текущий каталог (.
), а также включит все подпапки ( - recursive
).
Затем локальный zgrep
:
zgrep «поисковые слова» * .gz
Или также для рекурсивного поиска подкаталогов:
find -name \ *. Gz -print0 | xargs -0 zgrep "STRING"
(Взято с unix.stackexchange.com .)
Разницы не в SHA1, а во входных данных. Синтаксис здесь-строки добавляет новую строку, как мы можем видеть с od
:
$ od -c <<< foo
0000000 f o o \n
Таким образом, в вашей команде git
вводом являются десять символов Apple Pie\n
.
Кроме того, двойные кавычки, которые вы использовали в строках здесь, не поддерживают символы обратной косой черты, такие как \n
или \nnn
, поэтому <<< "blob 9\0Apple Pie"
дает строку, содержащую обратную косую черту и ноль.Однако
printf
интерпретирует \0
как байт NUL и не добавляет завершающую новую строку, поэтому с добавленной новой строкой и фиксированной длиной мы должны получить ожидаемый результат:
$ printf 'blob 10\0Apple Pie\n' | sha1sum
23991897e13e47ed0adb91a0082c31c82fe0cbe5 -
Мы могли бы попытаться сделать то же самое со строкой здесь, используя кавычку $''
, которая поддерживает \0
как представление байта NUL, но это может не работать в все оболочки, так как байт NUL заканчивает строку. Например. Bash не может с этим справиться, zsh
может:
$ zsh -c "sha1sum <<< $'blob 10\0Apple Pie'"
23991897e13e47ed0adb91a0082c31c82fe0cbe5 -