cbtagfs is a purely-metadata, tag-based filesystem in userspace.

It doesn't store files. It allows you to associate tags with files that exist
on other filesystems, and easily and intuitively find those files again based
on those tags.

cbtagfs...
 - is written in Perl
 - is compatible with any other mounted filesystems
 - uses FUSE to mount as non-superuser
 - uses normal filesystem interactions for all operations

Within the cbtagfs filesystem, tags are listed as directories, and descending
into them filters the results of files listed. Files are always served as
symlinks pointing back to the original. This makes interacting with cbtagfs
very general and intuitive.

This is best shown with some examples:

  Watch a slideshow of all my favorite people:

    $ feh /tags/pictures/Jakob/Ruby/Tyrone/*.jpg

  Ordering of tags doesn't matter, so this is the same as:

    $ feh /tags/Ruby/Tyrone/Jakob/pictures/*.jpg

  You can "cd" around to navigate your filters...

    $ cd /tags/my_work_project
    $ ls                         # lists all files related to the project

    $ cd documents
    $ ls                         # now filters to only "documents" within the project

    $ cd ..
    $ cd code/web
    $ ls                         # now list all web-related code for the project

  Queue up a custom playlist:

    $ mpg123 /tags/music/favorite/soothing/*.mp3

  Or run your own MTV:

    $ mplayer -fs -shuffle /tags/music/videos/*

Links
-----

 - Man page
 - Operations quick-guide
 - More thorough walkthrough
 - Limitations

Current release: cbtagfs-0.2.tar.bz2