Почему 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 -
Более подробную информацию читайте на страницах руководства.