hmm just making a guess for the \;, as mahendr said exec works on each file which is a result of find. basically exec spawns a process for each result of find, and executes the command, I think to allow multiple commands to be executed on a single command line you need the ;, but again ; is a special shell built-in character, hence you need to escape it with the \, hence the \;
a point to note here is in case you have lots of files as a result of find, you will end up using lots of process by exec, so then you can have an option to use xargs, instead of exec. finding the difference between the 2 is a different thread, and you might find it posted on some forum on this site. if you dont, lemme know, at the moment i m a bit lazy to explain that
( or maybe i dont know it either
)