Ambos definem a entrada padrão para um comando. A diferença é que o operador de pipe conecta a saída padrão de um comando à entrada padrão de outro comando, e o operador de redirecionamento de arquivo conecta um arquivo à entrada padrão de um comando.
Há também o uso de um canal anônimo para conectar os programas ao usar o operador de pipe, o que não é necessário ao redirecionar de um arquivo. Outra coisa a ter em mente é que o operador de pipe cria um subshell, enquanto o redirecionamento de IO não.