Substitui cat
por um loop for que emite uma linha por segundo:
for ch in {a..e} ; do echo $ch ; sleep 1 ; done | \
while IFS= read -r line ; do printf '%s\n' "$line" >> $(date +%H-%M-%S) ; done
Eu usei >>
em vez de >
se mais de uma linha aparecer em um segundo. Talvez seja necessário adicionar o mês + dia para não misturar a saída de dias diferentes.