I am deleting some folders and files to make more space on my drive. I know that in path:
~/Library/Developer/CoreSimulator/Devices/ path is where Xcode stores most of the data needed for your individual simulator devices.
Beau Nouvelle's suggestion about deleting downloaded simulator versions would not change the size of these folders, as the runtimes are stored elsewhere.
If you go to the terminal, you can use the simctl tool (comes with Xcode 6+) to list all of the actual simulator devices you have, along with the ids so that you can figure out what folders to delete.
Note, you'll see me constantly use xcrun simctl in this answer. That adds a bit of abstraction to things by having xcrun go look up the appropriate version of simctl for your currently chosen Xcode. If your system is not as complicated as mine, you can probably get by with dropping the "xcrun" part and the commandline should still find the simctl tool.
xcrun simctl list devices
Here are some selected snippets of the output I received:
== Devices ==
-- iOS 8.2 --
-- iOS 8.4 --
iPhone 6 Plus (23E36868-715A-48C8-ACC3-A735C1C83383) (Shutdown)
iPad Air (2928379B-70E3-4C59-B5BA-66187DDD3516) (Shutdown)
-- iOS 9.1 --
My Custom iPhone 4s (4F27F577-FFD0-42C1-8680-86BBA7394271) (Shutdown)
iPad Retina (85717B35-313A-4161-850E-D99D5C8194A6) (Shutdown)
-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-9-0 --
iPhone 4s (D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3) (Shutdown) (unavailable, runtime profile not found)
From that you can see that I have no iOS 8.2 simulator devices. I have some 9.1 and 8.4 simulator devices. I do have a 9.0 simulator device made (a remnant of my work on Xcode 7.0), but I don't have the 9.0 simulator runtime itself. So that's a good candidate for deletion, or a reminder that I should go download the 9.0 simulator in Xcode.
If you want, you can use those ids to identify the folder for the device in question and delete it manually (in this case I would delete the "D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3" folder), but you can also use the simctl tool to do that.
Usage according to the 7.1.1 version of simctl:
xcrun simctl help delete Usage: simctl delete <device> [... <device n>] | unavailable
So I can either delete the individual device(s):
xcrun simctl delete D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3
or I can bulk delete all of the unavailable ones with:
xcrun simctl delete unavailable
There is also no need to limit yourself purely to unavailable simulators.
If you need any further help with the tool, it comes with a fairly straight forward help command:
xcrun simctl help