Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash “效用论”;文件";在狂欢节上_Bash_Shell_File_Pipe_Utility - Fatal编程技术网

Bash “效用论”;文件";在狂欢节上

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查找感兴趣的文件,确保它们的名称用空字节分隔,并将此列表

好的,我要做的是,在bash中有一个名为“file”的实用程序,我想把当前目录和所有子目录中的所有文件作为参数传递给它。最好的办法是,如果我能把“查找”中的文件列表传递给它

但是“文件”不是那样工作的,它需要这样一个参数

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啊,是的。我的手指有个坏习惯塔克斯。