"Andreas R." <[EMAIL PROTECTED]> wrote:
>> find dir1 -exec diff -q "{}" dir2/`basename {}` \;
Here, the command substitution is expanded by the shell before find
runs. basename sees the literal argument {}, and so it outputs {},
and find sees dir2/{}.
>> find dir1 -exec sh -c "diff -q {} dir2/`basename {}`" \;
Here, agin, the command substitution is expanded before find runs.
Double quotes don't prevent an inner command substitution from being
expanded. Single quotes will, though. This will do what you want:
find dir1 -exec sh -c 'diff -q {} dir2/`basename {}`' \;
But if the filename contains any whitespace or shell metacharacters,
it'll cause trouble. You can protect against that like this:
find dir1 -exec sh -c 'diff -q "$0" dir2/"`basename "$0"`"' {} \;
paul