Ваше перенаправление stdout работает нормально и не связано с сообщением об ошибке, которое вы получаете (в любом случае это стандартная ошибка, а не стандартный вывод. Если вы хотите сбросить stderr, это 2>/dev/null
).
Причина ошибки заключается в том, что вы передаете имена файлов без кавычек в md5sum
. Обычный обходной путь с GNU find
заключается в использовании нулевых байтов вместо символов перевода строки:
find /var/www/html -type f -print0 |
xargs -0 md5sum |
tee /opt/figerprint.db.ori >/dev/null
Конечно, tee
ничего не нужно, если вы отбрасываете стандартный вывод.
find /var/www/html -type f -print0 |
xargs -0 md5sum >/opt/figerprint.db.ori
Обычно добавляется xargs -r
, чтобы вообще не запускать md5sum
, если find
не находит файлов.
Сообщение об ошибке предполагает, что вы, вероятно, не имеете GNU find
. Еще один способ сделать то же самое -
find /var/www/html -type f -exec md5sum {} + >/opt/figerprint.db.ori
Если ваш find
действительно древний и не поддерживает -exec ... +
, вам нужно будет переключиться на
find /var/www/html -type f -exec md5sum {} \; >/opt/figerprint.db.ori
, что, однако, будет довольно неэффективно, поскольку создает один процесс для каждого найденного файла.