for filename in "On time.txt" ; do
replacement=$(echo $filename | sed -e 's,^.*/,,' -e 's,\.[^\.]*$,,')
[ -f "$filename" ] && sed -i "s,replace,$replacement," "$filename"
done
Para fazer todos os arquivos em seu diretório, substitua "On time.txt" por * assim:
for filename in * ; do
Note que aqui os nomes dos arquivos não podem conter vírgulas (você pode escolher o caractere para que ele não apareça nos seus nomes de arquivo).