为什么find . | cat有效(打印所有文件名)但find . | file -i不适用于显示所有文件 mime 类型?
它不应该工作,因为有来自的输出find .和来自的输入file -i吗?
(对不起,如果这是一个愚蠢的问题,我是一个使用 bash 的初学者,我找不到另一个可以向我解释这一点的问题)
使用管道,右侧的命令读取其 stdin 通道上的数据。该file命令要求文件是命令行参数,而不是标准输入上的数据。
这正是该xargs命令的用途:从标准输入读取,并将数据作为命令行参数提供:
find . | xargs file -i
Run Code Online (Sandbox Code Playgroud)
或者,使用以下-f选项file:
find . | file -i -f -
Run Code Online (Sandbox Code Playgroud)
阅读手册页以获取更多详细信息。