I would open two file manager windows side-by-side: one showing large miniatures of the pics to sort, the other showing the subfolders, and move each miniature to the desired subfolder. The drawback is that it requires a lot of mouse action.
Alternatively, I would use a photo manager such as Shotwell to tag each photo with a unique tag, the name of the desired subdirectory. Once this is done, selecting a specific tag would show all the corresponding images, making it easy to move them to a file manager subdirectory using the photo manager's export function.
The drawback is that tagging photos requires some mouse or keyboard action: the ideal tagging program would therefore be one that (besides having an export function) applies a tag based on only one programmable key press (e.g. A for animals, B for beverages, C for cooking...). As far as I know Shotwell doesn't let the user tag pictures that way. Please let me know if you find one working on GNU/Linux.
The tagging approach also makes it possible to let certain pictures have several tags. But to export such pictures from the photo manager's database to the disk structure without creating duplicates (e.g. a picture tagged twice having copies in two different subfolders), one needs to use a tagged filesystem (which is a relatively exotic matter).