问题
I want to run:
./my_script.py a_file &
... on all files in the current folder that end with .my_format
, so I do:
find . -type f -name "*.my_format" -exec ./my_script {} & \;
but it doesn't work. How should I include &
in the -exec
parameter?
回答1:
Try this:
$ find . -type f -name "*.my_format" -exec sh -c './my_script {} &' \;
The mostly likely reason your attempt didn't work is because find executes the command using one of the exec(3)
family of standard c library calls which don't understand job control - the &
symbol. The shell does understand the "run this command in the background" hence the -exec sh ...
invocation
回答2:
Try this find command:
find . -type f -name "*.my_format" -exec bash -c './my_script "$1" &' - '{}' \;
来源:https://stackoverflow.com/questions/20146676/bash-exec-in-find-command-and