Bash 中实用程序 "file" 的参数

Argument of the utility "file" in Bash

好的,所以我想做的是,bash 中有一个名为 "file" 的实用程序,我想将当前目录和所有子目录中的所有文件作为参数传递给它。最好的事情是,如果我可以将 "find"

中的文件列表传递给它
find -type f | file * -b

但是 "file" 不是那样工作的,它需要这样的参数

file /argument/ -b

我也尝试使用一些正则表达式,但它也不起作用。

像这样的东西应该可以工作

find . -type f -print0 | xargs -0 -n1 file -b

在这里,首先 find 找到感兴趣的文件,确保它们的名称用空字节分隔,然后将此列表传递给 xargs,后者然后在块上调用 file大小 1,即分别在每个文件上...

但原则上,file 可以一次处理多个输入参数,因此可以增加块的大小以减少此实用程序的总执行次数...

此外,您可以强制 file 从标准输入读取其输入,如下所示:

find . -type f | file -f- -b

-f 选项指定 file 应从中加载要识别的文件的文件,- 然后请求使用标准输入。

可以试试

find . -type f -exec file -b {} +