GNU Songanizer

 [Listening Gnu by the Nevrax Design Team]


GNU Songanizer is a shell script to organize a directory containing a collection of Ogg Vorbis and MP3 files. The goal is to create virtual directory structures, which give different views of the data, but without having redundant copies of the files themselves.

The files are organized according to information gathered from the tags of files stored in subdirectories located under the 'base' directory, which bear the prefix _data in their name. Parallel virtual directory structures containing symbolic links to the actual files are created, which give different views of the same data. Each virtual directory stucture gives a view based on a particular attribute specified by the user. The _data directories themselves can be symbolic links to directories on other devices, and can have multiple levels of sub-directories within them holding the actual song files.

After songanization, the BASE directory contains the following directories:
(i) _data* --> All directories starting with _data contain the real data.
(ii) _artist --> Contains the link structure on the basis of the artist tag.
(iii) _genre --> Contains the link structure on the basis of the genre tag.
(iv) _initial --> Contains the link structure on the basis of the initial.
... and more, depending on the switches passed to the script.


Since Songanizer is a shell script, a running shell is the first and foremost requirement. Preferably it should be GNU Bash. If you encounter problems on any shell, please report them. (See how to report bugs here).

GNU Getopt (enhanced) is needed to extract the options from the command line arguments. Alongwith that you should have GNU Gettext for internationalization support. You can get GNU Gettext here.

The GNU Libextractor package should be installed in the system to process the file tags. It can be downloaded from here.

Please note that mp3info is no longer used to read the tags. It did not support ID3v2 tags and Ogg Vorbis files, which made it unfit for further use.


The latest stable release is version 1.0. It is available as tar.gz and tar.bz2.

For detailed information about the progress in development see the ChangeLog.

Mailing Lists

GNU Songanizer now has two mailing lists: <> and <>.

The main discussion list is <>, and is used to discuss all aspects of GNU Songanizer, including development, packaging and porting.

Announcements about GNU Songanizer and most other GNU Software are made on <>.

There is also a special list used for reporting bugs, <>.

To subscribe to any GNU Songanizer mailing list, please send an empty mail with a Subject: header line of just "subscribe" to the relevant -request list. For example, to subscribe yourself to the main list, you would send mail to <> with no body and a Subject: header line of just "subscribe".


June 2003Patrick OhneweinAuthorStarted the project. Wrote the initial version of most of the files.
August 2003Benjamin GuflerContributorHelped with the ID3 tags.
July 2004Juergen KoflerContributorWrote a Python implementation.
September 2005Debarshi RayMaintainerDay to day maintenance of the project. Primarily responsible for most of the releases after version 0.7.


There have been a lot of people who have contributed towards the development of the project in ways other than contribution of code/text. The authors would like to acknowledge the work done by these group of good samaritans. They include the GNU Project for helping the development of free software, and particularly GNU Songanizer; Christian Grothoff for suggesting the use of GNU Libextractor to read the tag information; and Massimo Bassi for his help regarding 'long options support'.

Apart from that we are grateful to all those who have given GNU Songanizer a try, and given valuable feedback in the form of bug reports and other suggestions.

About GNU Songanizer

Mailing lists


Mirror sites


To do


Bug database