O que os xargs fazem exatamente nesse caso?

0

Recentemente me deparei com os dois exemplos a seguir

Exemplo 1: Listar somente diretórios

ls -l | grep "^d"

Exemplo 2: pesquisa dentro de arquivos

   ls | xargs grep -i "Find Some String"

Agora li em aqui que

If you just use a pipe, it receives data on STDIN (the standard input stream) as a raw pile of data that it can sort through one line at a time.

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, o xargs é usado para converter stdin em arguments . (Desde que alguns programas requerem argumentos em vez de stdin). Isso significa que grep pode levar tanto stdin quanto argumentos? Eu apreciaria se alguém pudesse explicar por que os xargs são usados no segundo exemplo por que não funcionam sem xargs? Para que serve servir?

    
por Rajeshwar 28.12.2015 / 02:14

1 resposta

1

No exemplo 2, você está procurando por um determinado texto no file contents , então você precisa do xargs para passar os nomes dos arquivos para o grep. No exemplo 1, você está pesquisando a saída de ls, não o conteúdo do arquivo.

na verdade, você pode pesquisar o conteúdo do arquivo sem usar xargs, o que é melhor:

grep -i 'some text' *
    
por 28.12.2015 / 02:31