Você pode tentar:
for a in *.ext; do mv "$a" "${a/ */}.ext"; done
Explicação :
for a in *.ext
- obtém todos os arquivos com a extensão .ext
no diretório atual;
a/ */
- substitui a substring por nada ($ {string / substring / replacement}). Essa construção obtém todos os símbolos após o espaço (inclusive) e os exclui.
.
Ou se você tiver arquivos com extensões diferentes e precisar processar todos os arquivos no diretório, tente:
for a in *; do mv "$a" "${a/ *\./\.}"; done
O equivalente com o comando renomear Perl é:
prename 's/ .*\./\./' *
Exemplo : arquivos
100 foo_1.ext
200 foo_1.ext
201 foo_3.ext
3401 txt_3.txt
será renomeado para
100.ext
200.ext
201.ext
3401.txt
Arquivos sem espaços no nome do arquivo não serão processados.