Com o GNU sed (assumido, dada a tag linux ), por Edição -i
"no local":
for file in *.txt
do
sed -i "1s/\$/ ${file%%.*}/" "$file"
done
com ed:
for file in *.txt
do
printf "%s\n" "1s/\$/ ${file%%.*}/" "wq" | ed -s "$file"
done
Estes não deixam espaço entre o final da linha e o nome do arquivo.