何故動かないか結構困ったのでメモ。
動かないもの
find . -name '*.mkv' -exec bash -c 'echo "{}"' \;
cygwin 環境、というかcmd.exeでcygwinの中のfindコマンドを呼び出してるとこれはエラーになっちゃいます。
理由
何故ならfindの\;の\は;をエスケープする役割なので、当然ここにはエスケープキャラクターを入れて置かなければならないわけですが、Windowsのcmdにおいて\はパス区切りであって何もエスケープしてくれません。
なのでcygwinのfindをcmd.exeやnyaosなどのWindows環境のシェルから使うときはcmd.exeのエスケープキャラクターの^を使ってこんなふうに書きましょう。
find . -name '*.mkv' -exec bash -c 'echo "{}"' ^;
もしくはどちらの環境でも使える方法の
find . -name '*.mkv' -exec bash -c 'echo "{}"' ';'
を使うのもいいかもしれません。