почему эта команда с использованием трубы не работает?

почему эта команда с использованием трубы не работает?

Почему find . | catработает (выводит все имена файлов), но find . | file -iне работает для отображения всех типов MIME файлов?

Разве это не должно работать, поскольку есть выход find .и вход file -i?

(Извините, если это глупый вопрос, я новичок в использовании bash и не смог найти другого вопроса, который мог бы мне это объяснить)

решение1

С помощью конвейера команда справа считывает данные на своем канале stdin. Команда fileтребует, чтобы файлы были аргументами командной строки, а не данными на stdin.

Именно для этого и xargsпредназначена эта команда: чтение из stdin и предоставление данных в качестве аргументов командной строки:

find . | xargs file -i

Или, используйте -fопцию для file:

find . | file -i -f -

Более подробную информацию читайте на страницах руководства.

Связанный контент