-
Notifications
You must be signed in to change notification settings - Fork 1.9k
SC2067
Joachim Ansorg edited this page Nov 12, 2021
·
4 revisions
Missing ; or + terminating -exec. You can't use |/||/&&, and ; has to be a separate, quoted argument.
find . -type f -exec shellcheck {} | wc -l \;
find . -exec echo {} ;find . -type f -exec sh -c 'shellcheck "$1" | wc -l' -- {} \;
find . -exec echo {} \;find -exec is still subject to all normal shell rules, so all shell features like |, ||, & and && will apply to the find command itself, and not to the command you are trying to construct with -exec.
find . -exec foo {} && bar {} \; means run the command find . -exec foo {}, and if find is successful, run the command bar "{}" ";".
To instead go through each file and run foo file && bar file on it, invoke a shell that can interpret &&:
find . -exec sh 'foo "$1" && bar "$1"' -- {} \;You can also use find -a instead of shell &&:
find . -exec foo {} \; -a -exec bar {} \;This will have the same effect (-a is also the default when two commands are specified, and can therefore be omitted).
None