I can&#x27;t believe this, but I created something like this in an ad-hoc way. I have a large amount of music, and I needed to be able to transfer them to devices (my phone) based on some sort of tag - I need work-out music, I need driving music, etc. Genres are inappropriate for this. The easiest way to transfer this to the device is have a directory full of links that point to the right files &#x2F; directories.<p>So, depending on the need, I will either have two directories (files and tags) or a number of file directories and a tag directory. File directories can have whatever they want, and tag directories have either only tag directories (like workout, driving, etc) or soft links.<p>Tagging a file &#x2F; directory is easy - just link to it. Untagging is just as easy. The links don&#x27;t take up much space, especially next to the music. When I&#x27;m transferring the files, I either use a script to make a directory with the links replaced with their file counterparts, or I transfer with something like rsync that can do that itself.<p>I&#x27;m amazed how similar this project is to my own solution. It&#x27;s nice to have a dedicated script for the whole thing, but the solution itself is very simple, and easy to script with.<p>This isn&#x27;t born out of frustration - hierarchical filesystems are perfectly adequate for most tasks. But they have not been trees for a long time - we have links, which let us make any graph we want out of those trees.