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 {} +
好的,所以我想做的是,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 {} +