Por que find . | cat
funciona (imprimindo todos os nomes de arquivos), mas find . | file -i
não funciona para mostrar o tipo MIME de todos os arquivos?
não deveria funcionar, já que há uma saída find .
e uma entrada de file -i
?
(Desculpe se esta é uma pergunta estúpida, sou iniciante no bash e não consegui encontrar outra pergunta que pudesse me explicar isso)
Responder1
Com um pipe, o comando do lado direito lê os dados em seu canal stdin. O file
comando requer que os arquivos sejam argumentos de linha de comando, não dados em stdin.
É exatamente para isso que xargs
serve o comando: ler stdin e fornecer os dados como argumentos de linha de comando:
find . | xargs file -i
Ou, use a -f
opção para file
:
find . | file -i -f -
Leia as páginas de manual para obter mais detalhes.