好的,我正在尝试做的,有一个名为" file"在bash中,我想将它作为参数传递给当前目录和所有子目录中的所有文件。最好的事情是,如果我可以传递来自"找到"
的文件列表find -type f | file * -b
但"文件"不是这样的,它需要像这样的论点
file /argument/ -b
我也试图使用一些正则表达式,但它也不起作用。
答案 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
应加载要识别的文件的文件,-
然后请求使用标准输入。