O comando time não faz o que você acha que faz. De fato, uma vez que seu propósito é cronometrar a execução de outro comando, executá-lo sem argumentos (sem comando para tempo) não faz muito sentido. (Aparentemente ainda funciona sem reclamação!)
O efeito específico que você está vendo aqui é que time
exibe suas estatísticas no erro padrão, não na saída padrão (para evitar interferir na saída de qualquer coisa que você esteja cronometrando). Redirecionar a saída padrão não tem efeito no canal de erro padrão. Tente isso:
time ls 2>time.txt
... onde você está redirecionando o erro padrão, não a saída padrão. A saída de ls
é exibida como de costume (a saída padrão não é redirecionada), mas a saída de time
no erro padrão vai para o arquivo, que é o que eu acho que você estava tentando alcançar.