Por favor, consulte a página de manual de ls(1)
! O comando ls
leva seus argumentos na linha de comando não na entrada padrão (i. E. Descritor de arquivo 0).
Quando você corre
<SOME_COMMAND> | ls [OPTIONS...]
você instrui o interpretador de comandos a criar um pipe ( |
) da saída padrão do comando esquerdo para a entrada padrão do comando direito (aqui: ls
). Mas ls
desconsidera sua entrada padrão e inspeciona seus parâmetros de linha de comando, não encontrando nenhum argumento posicional e listando o diretório de trabalho atual (armazenado na variável de ambiente PWD
por interpretadores de shell como Bash). / p>
O xargs(1)
leva tokens (delimitado por caracteres de espaço em branco, se não especificado de outra forma) de seu fluxo de entrada padrão e os adiciona como parâmetros à linha de comando de outro comando a ser executado. No seu caso, o comando ls
dado a xargs
recebe um conjunto de nomes de caminho em sua linha de comando e executa sua tarefa conforme documentado pelo manual.
Bônus: A opção "comando" -ls
para GNU find
imprimirá os caminhos correspondentes de maneira semelhante a ls -dils
(veja find(1)
).