Bash “效用论”;文件";在狂欢节上
好的,我要做的是,在bash中有一个名为“file”的实用程序,我想把当前目录和所有子目录中的所有文件作为参数传递给它。最好的办法是,如果我能把“查找”中的文件列表传递给它 但是“文件”不是那样工作的,它需要这样一个参数Bash “效用论”;文件";在狂欢节上,bash,shell,file,pipe,utility,Bash,Shell,File,Pipe,Utility,好的,我要做的是,在bash中有一个名为“file”的实用程序,我想把当前目录和所有子目录中的所有文件作为参数传递给它。最好的办法是,如果我能把“查找”中的文件列表传递给它 但是“文件”不是那样工作的,它需要这样一个参数 file /argument/ -b 我也试着使用一些正则表达式,但它也不起作用。类似的东西应该会起作用 find . -type f -print0 | xargs -0 -n1 file -b 在这里,首先find查找感兴趣的文件,确保它们的名称用空字节分隔,并将此列表
file /argument/ -b
我也试着使用一些正则表达式,但它也不起作用。类似的东西应该会起作用
find . -type f -print0 | xargs -0 -n1 file -b
在这里,首先find
查找感兴趣的文件,确保它们的名称用空字节分隔,并将此列表传递给xargs
,然后对大小为1的块调用file
,即对每个文件分别调用
但原则上,file
可以同时处理多个输入参数,因此可以增加块的大小,以减少此实用程序的执行总数
此外,您可以强制文件
从标准输入读取其输入,如下所示:
find . -type f | file -f- -b
-f
选项指定从中加载要识别的文件的文件,然后请求使用标准输入。类似的方法应该可以工作
find . -type f -print0 | xargs -0 -n1 file -b
在这里,首先find
查找感兴趣的文件,确保它们的名称用空字节分隔,并将此列表传递给xargs
,然后对大小为1的块调用file
,即对每个文件分别调用
但原则上,file
可以同时处理多个输入参数,因此可以增加块的大小,以减少此实用程序的执行总数
此外,您可以强制文件
从标准输入读取其输入,如下所示:
find . -type f | file -f- -b
-f
选项指定从中加载要识别的文件的文件,-
然后请求使用标准输入。可以尝试
find . -type f -exec file -b {} +
可以试试
find . -type f -exec file -b {} +
实际上,
-b
应该在名称之前。请参见数字9:“所有选项都应位于命令行上的操作数之前”。实际上,-b
应位于名称之前。请参阅第9条:“所有选项都应位于命令行上的操作数之前”。-print0 | xargs-0
在较新的find
实现中,最好用-exec>替换。。。{}+
——它与xargs
一样,将参数分组为尽可能少的调用,但这样做不需要非POSIX扩展。(find-exec…{}+
自2006年左右就已经被POSIX指定,而xargs-0
仍然不是标准的一部分)…纠正我自己:这是POSIX第6版,所以-exec。。。{}+
自2004年起生效。-print0 | xargs-0
在较新的find
实现中,最好替换为-exec。。。{}+
——它与xargs
一样,将参数分组为尽可能少的调用,但这样做不需要非POSIX扩展。(find-exec…{}+
自2006年左右就已经被POSIX指定,而xargs-0
仍然不是标准的一部分)…纠正我自己:这是POSIX第6版,所以-exec。。。{}+
自2004年起生效。在+
之前不需要反斜杠;这只是需要的代码>表格。@CharlesDuffy啊,是的。我的手指有个坏习惯thanx.在+
之前不需要反斜杠;这只是需要的代码>表格。@CharlesDuffy啊,是的。我的手指有个坏习惯塔克斯。