Я думаю, что > интерпретируется в текущей оболочке. То же относится и к * , т. Е. Если у вас есть filename-A.conf (или, что еще хуже: больше подходящих файлов) в текущем каталоге, то глобализация оболочки нарушит вашу команду. Также обратите внимание: ваше sudo относится только к find , а не к xargs .
Попробуйте это (с sudo если необходимо):
find /opt -name 'filename-*.conf' -print0 | xargs -r0 sh -c 'echo "text_to_send" | tee "$0" "$@"' > /dev/null
Предупреждение: tee перезапишет файлы (как > делает, так что я думаю, это то, что вы хотите); используйте tee -a для добавления.
find -print0 и xargs -0 работают даже с необычными именами файлов,
xargs -r не запускается, если файл не найден,
sh обрабатывает внутреннюю трубу,
$0" "$@" передает все имена файлов (после xargs) безопасной командой, sh ,
tee обрабатывает один или несколько найденных файлов,
- последнее перенаправление должно предотвратить появление
text_to_send в вашем терминале.