ls
tem diferentes formatos de saída e exibe as coisas de maneira diferente se estiver gravando em um terminal em vez de em um pipe. Ao gravar em um pipe, ele grava apenas uma entrada por linha, portanto, grep
pode trabalhar em cada listagem individualmente.
Então, quando você faz isso grep
, você está obtendo uma saída diferente de ls
do que quando você acabou de executar ls
e imprimir na tela.
Você pode ver o mesmo efeito que o grep
está experimentando se você fizer isso
ls | cat
, que exibirá todas as entradas, uma por linha.