
If you want or need to continue the on failed subcommands you have to use find -exec. If you need to stop the execution on failed subcommands, you need to use xargs. If the subcommand can only take one argument, you have to use \ and -n1. If the subcommand is able to use multiple inputs, then use + and no -n1. It depends on the subcommand whether you have to use \ for find and -n1 for xargs. We can now see the main difference between find -exec and find | xargs:įind -exec will continue on every file, even if -exec fails, but find | xargs will immediately stop once there is an error in the piped command.

Why? Because the subcommand failed and this is the nature of piping commands. name \*.php -type f -print0 | xargs -0 -n1 php -l everythingcli/wordpress/wp-admin/options-media.phpĮven though php -l fails and exits with 1 somewhere at the beginning, find -exec continues and finally exits with zero. everythingcli/wordpress/wp-admin/options-head.php everythingcli/wordpress/wp-admin/options-general.php everythingcli/wordpress/wp-admin/options-discussion.php everythingcli/wordpress/wp-admin/network.php everythingcli/wordpress/wp-admin/network/users.php everythingcli/wordpress/wp-admin/network/user-new.php Parse error: syntax error, unexpected '=' in. PHP Parse error: syntax error, unexpected '=' in. name \*.php -type f -exec grep -Hn '$test' \

php and look for the string $test inside those files: # find -exec \ įind. So what is the difference and which one should you choose? There are also two different choices for find -exec and find | xargs that will have a dramatic impact on performance.

exec or you can pipe the results to xargs. If you want to search files by a pattern and then apply something to the results you have at least two choices.
