*
интерпретируется оболочкой Bourne (расширение имени пути) в момент анализа вашей команды, прежде чем она будет фактически выполнена, НЕ в момент выполнения tail
.
Если вы хотите, чтобы команда, созданная xargs
, подлежит расширению имени bash
, вам необходимо выполнить bash
:
echo "string" | xargs -I '{}' bash -c "tail -F *'{}'*"
Проблема безопасности: если у вас нет контроля над именами файлов, отправленных на xargs
, то со специально созданными именами файлов вы можете случайно выполнить некорректные команды.