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:-find命令中的exec和&;_Bash_Find - Fatal编程技术网

bash:-find命令中的exec和&;

bash:-find命令中的exec和&;,bash,find,Bash,Find,我想跑: ./my_script.py a_file & 。。。在当前文件夹中以.my_format结尾的所有文件上,我执行以下操作: find . -type f -name "*.my_format" -exec ./my_script {} & \; 但它不起作用。我应该如何在-exec参数中包含&?尝试以下查找命令: find . -type f -name "*.my_format" -exec bash -c './my_script "$1" &' -

我想跑:

./my_script.py a_file &
。。。在当前文件夹中以
.my_format
结尾的所有文件上,我执行以下操作:

find . -type f -name "*.my_format" -exec ./my_script {} & \;
但它不起作用。我应该如何在
-exec
参数中包含
&

尝试以下查找命令:

find . -type f -name "*.my_format" -exec bash -c './my_script "$1" &' - '{}' \;
试试这个:

$ find . -type f -name "*.my_format" -exec sh -c './my_script {} &' \;

您的尝试不起作用的最可能原因是find使用标准c库调用的
exec(3)
系列之一执行命令,该系列调用不理解作业控制-符号
&
。shell确实理解“在后台运行此命令”,因此调用了
-exec sh…
哦,好的,谢谢。所以
sh
是所有linux机器上的基本shell,对吗?最近的linux发行版将/bin/sh符号链接到符合posix sh的shell。如果我们为每次执行生成一个新的shell,为什么还要在后台添加已执行的命令?shell会一个接一个地执行。把它放在后台有一个并行运行的shell脚本的副作用(CPU一次可以处理的数量)。如果在你递归的树中有很多文件,你的系统可能会被锁定。一年后指出这一点有意义吗?我是在面对这个问题时提出这个问题的,这绝对不是一个坏问题。在这一点上,提到它是一个副本是一种通知未来读者其他答案可用的方式,仅此而已。最后,只有类似的问题对我有所帮助。