awk pode produzir texto, não é necessário echo ou xargs . Sua abordagem tem problemas para nomes de arquivos com mais de um ponto, como foo-1.2.txt .
Também teria problemas para nomes de arquivos com novas linhas ou se houver diretórios cujo nome terminasse em .txt .
Por uma vez, eu usaria um loop aqui, por exemplo, com zsh:
(set -o noclobber; for f (*.txt(N)) echo abracadabra > $f:r.test)
Ou POSIXly:
(set -o noclobber
for f in *.txt; do
echo abracadabra > "${f%.*}.test"
done)
O noclobber é para evitar a substituição de um arquivo já existente. Note que omite arquivos ocultos. Se não houver nenhum arquivo txt , ele criará um arquivo *.test .