Compare many KiCad projects by UUIDs?

I agree with Paul, it would be easier to write an external program. For a *nix guru this would be very easy: write a regular expression for finding all UUIDs, match and print them line by line, sort, save to file, compare with the other file. Identical file means all identical UUIDs, a copy of the older project where no items have been added or removed.

However, there really is a caveat: items may be deleted and added even if you don’t edit like that on purpose. For example, if you drag an item (wire or track) slightly, it may create new segments and/or delete an old one. Therefore blindly comparing all IDs isn’t good (because you said the students modify the projects). Probably you should compare only symbols and/or footprints.

Then, notice that what you actually need to compare is “path”, not “uuid”. When you add a symbol to a schematic it gets a unique path. This path is added to the corresponding footprint when the PCB is updated.

Read Update PCB from Schematic's match methods - #2 by eelik to see how it works.

Do the projects have PCBs and can you assume the PCB file has been created and updated in the standard KiCad way? If yes, you have to use only the PCB files because they include the same paths than the schematic symbols. If not, you can use only the schematic files. Or you can use the schematic in any case – most probably the PCB is irrelevant because it follows the schematic, whether the project is copied or not. It should be enough to find every “path” line and compare them. Then the student must at least delete and re-add a symbol to fool your algorithm. If you want to be strict, you can think about how to compare for certain percentage of correspondence.

Even this doesn’t help if the student opens the original in KiCad, selects what’s there and pastes it to a new project. But this already requires some work and knowing how and why to do it. If it’s a one page schematic and no PCB it would be easy for the student who knows about your automated system. Which means, even if one of them ever reads or hears about this forum discussion…