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
.