findのexecに&&が使えなくて友人に聞いてみたところ、
findの引数は順々に正のものが評価されるらしい
NG
find . -name '*.txt' -type f -exec 7zr a {}.7z {} && mv {} /tmp \;
OK
find . -name '*.txt' -type f -exec 7zr a {}.7z {} \; -exec mv {} /tmp \;
ただし、gnu findでないと{}.7zのような表現が許されないかもしれないので、
正しくはシェルスクリプトを書くべき...だそうだ。
参考
ちょっとだけカッコよく find(1) を使う
http://www.sixnine.net/roadside/find.html
UNIX FAQ LIST
http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html
http://www.nurs.or.jp/~asada/FAQ/UNIX/section3.4.html