Tente:
$ date | tr ' ' '_'
ou
$ date | sed 's/ /_/g'
Seu comando substituiu apenas a primeira instância correspondente da entrada de data porque esse é o comportamento padrão de sed
. Adicionando a opção g
(substituição global) ao final do comando, sed
em vez disso irá combinar e substituir todas as ocorrências da expressão.