-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2067
Vidar Holen edited this page Oct 4, 2015
·
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