It also messes up version control diffs though when renaming a library element and changing it at the same time. What’s worse, it causes conflicts when two people create pull requests changing the same library element, where someone renames it and the other person changes another property in the element itself.
I don’t currently see the UUIDs as a big problem, since managing them will usually happen through the LibrePCB editor. Finding things can be done by recursive search tools like grep or rg, and an option for opening a library element in the filesystem is alread implemented in LibrePCB.
The advantage of UUID based directories is that LibrePCB can deterministically know where a library element is stored just by looking at the UUID. The name will never change. This allows users to change the name at will, without any consequences regarding the filesystem, version control, or anything like that. It also means that we are free to use any characters in the library element name, without having to consider support in file system paths.