¿Por qué este comando que usa pipe no funciona?

¿Por qué este comando que usa pipe no funciona?

¿Por qué find . | catfunciona (imprimir todos los nombres de los archivos) pero find . | file -ino funciona para mostrar todos los tipos de archivos MIME?

¿No debería funcionar ya que hay una salida find .y una entrada file -i?

(Lo siento si esta es una pregunta estúpida, soy un principiante en el uso de bash y no pude encontrar otra pregunta que pudiera explicarme esto)

Respuesta1

Con una tubería, el comando del lado derecho lee los datos en su canal estándar. El filecomando requiere que los archivos sean argumentos de línea de comando, no datos en la entrada estándar.

Esto es exactamente para lo que xargssirve el comando: leer desde la entrada estándar y proporcionar los datos como argumentos de la línea de comando:

find . | xargs file -i

O, utilice la -fopción para file:

find . | file -i -f -

Lea las páginas del manual para obtener más detalles.

información relacionada