实用程序"文件"的争论在巴什

时间:2017-03-14 18:30:50

标签: bash shell file pipe utility

好的,我正在尝试做的,有一个名为" file"在bash中,我想将它作为参数传递给当前目录和所有子目录中的所有文件。最好的事情是,如果我可以传递来自"找到"

的文件列表
find -type f | file * -b

但"文件"不是这样的,它需要像这样的论点

file /argument/ -b

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

2 个答案:

答案 0 :(得分:3)

可以尝试

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

答案 1 :(得分:1)

这样的事情应该起作用

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

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

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

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

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

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