Eu encontrei recentemente os dois exemplos a seguir
Exemplo 1: Listar Apenas Diretórios
ls -l | grep "^d"
Exemplo 2: Pesquisar arquivos internos
ls | xargs grep -i "Find Some String"
Agora eu li daqui que
Se você usa apenas um pipe, ele recebe dados em STDIN (o fluxo de entrada padrão) como uma pilha de dados que pode ser classificada em uma linha por vez.
Então agora estou um pouco confuso sobre por que o grep requer xargs no segundo e não no primeiro. Pelo que entendi até agora é que xargs é usado para converter stdin
em arguments
. (Desde que alguns programas requerem argumentos em vez de stdin). Isso significa que o grep pode pegar tanto stdin quanto argumentos? Eu apreciaria se alguém pudesse explicar por que os xargs são usados no segundo exemplo porque não funcionam sem xargs? Com qual finalidade ele está servindo?