digitaglinktree  -  Export  tag  structure  of photos in digikam to the



   -l taglinkdir | -A archivedir

   -d database

   [-r rootdir]



   digitaglinktree will create a linktree for  all  photos  in  a  digikam
   database that have tags set on them. Tags (like eg. "family", "events",
   ...)  are used in digikam to create virtual folders  containing  images
   that all have one or more tags assigned.  Please note: Photos that have
   no tags at all assigned  are  silently  ignored  by  this  script.  The
   program  will  not modify or even touch your original photos managed by

   The script can be used in two ways: If you call  it  using  Option   -l
   taglinkdir   the  script  will  create  the  user  specified  directory
   taglinkdir and inside this directory it will create sub directories for
   digikam  tags   set  on the photos. Inside these subdirectories it will
   finally  place symbolic or hard links  (see -H) to  photos  having  the
   tags  in question.  As a result you will see the tags of your photos as
   folders and in these folders you  will  find  links  to  your  original

   In  this  way  you can access the collection of all images that share a
   certain tag by changing directory to the  folder  with  the  tags  name
   created  by  this  script.   This allows you e.g. to run JAlbum a photo
   album software that needs to find the pictures to be  put  into  a  web
   album  in  the filesystem because JAlbum cannot access digikams virtual
   folders directly.

   The second way of calling this script is the so called archive-mode  by
   setting option  -A archiveDir.

   Archive  mode  is  thought for people who want to archive tagged photos
   independently of digikams root  directories  and  the  photos  therein.
   This  way  you can put your photos and their tag structure in eg. a tar
   archive and send it  to a friend, who can look at the photos via  their
   tag  structure.  In this mode the script creates the directory given as
   parameter to -A and in this  directory  two  more  subdirectories.  One
   named  Photos  and  a second named Tags.  The Photos directory contains
   hard links to your original photos, and the Tags directory  contains  a
   subdirectory  for  each  Tag  used  by  any of your photos. Inside this
   subdirectory there are links (either symbolic or  hard  links)  to  the
   files  in  the  Photos directory. This way the archive  directory needs
   nearly no additional space on your harddisk and  you  have  an  archive
   that   allows  you  or  a  friend  to  easily  look  at  the photos tag

   Another benefit from using this script is  that  you  have  kind  of  a
   backup  of  your  tag  settings  for  all of your photos. The backup is
   simply the directory structure containing links to the original  images
   that wear the tags.  This could become important if for whatever reason
   the digikam.db file gets corrupted or even lost.


    -l taglinkdir
          Parameter  taglinkdir denotes  a  directory  in  which  the  tag
          structure  of all your photos stored in rootdir will be exported
          to by creating subdirectories for each tag and placing  symbolic
          links  in  these subdirectories that point to the original photo
          wearing  the  tags.  If  calling  the  script  with  option   -l
          taglinkDir you also have to  specify options -r  rootdir as well
          as -d database.

    -A archivedirectory
          archivedirectory denotes a directory into which the script  will
          export  the  photos   and their tag structure. -A has to be used
          together with option  -r  rootdir if  using  digikam  version  <
          0.10,  as  well  as  -d database else the script will terminate.
          Inside the archive  directory the script will  create  a  Photos
          and  a  Tags  directory.  It  will put hard links in the  Photos
          directory  that point to your original  photos.  By  using  hard
          links  you  are  independent   of  changes  in your digikam root
          directory  but  on  the  other  hand  you  are  limited  to  one
          filesystem.   So  the  directory  given  by  -r  rootdir and the
          directory specified for -A archivedir have to be  one  the  same
          filesystem.  If  using  digikam  in  version  >= 0.10 you cannot
          specify -r rootdir . Instead the root paths of  all  albums  are
          taken   from  digikams  database  directly.  However  still  the
          requirement holds,  that  archivedir  has  to  be  on  the  same
          filesystem  like  all the root directories containing photos you
          defined in digikam.  If one of digikams root directories  is  on
          another  filesystem  this  one  will  not  be  processed,  since
          hardlinking the photos inside the  Photos  directory  would  not
          work  in this case!  The Tags subdirectory will contain links to
          the files in the Photos directory. This way you have one archive
          directory  that  is  completely  self contained. You can tar it,
          send it to a friend or  just put it somewhere  for  archivel  or
          backup purposes. Usually only those photos will be archived that
          have a digikam tag set on them. By using option -C  however  you
          can perform a complete archive. See -C for more infos.

    -d database
          database is the complete path including the filename to digikams
          photo database which usually  can  be  found  in  digikams  root
          directory. The files name  is usually digikam.db .

    -r rootdir
          rootdir  denotes  the digikam base directory containing all your
          photos if you are using digikam in a version before 0.10. If you
          are using digikam 0.10 or newer you must not use this option. If
          you do it anyway you will see a hint that the option given  will
          be  ignored  because digikams version 0.10 database contains the
          root directories of all albums defined in digikam.

    -C    When the script is called with option -A archivedir  only  those
          photos  will  be  archived  (by  placing  links)  in  the Photos
          subdirectory of archivedir that have at least  one  digikam  tag
          set.  By  setting  option  -C  all  photos  will be  archived to
          archivedir no matter if they have a tag set or not.  Note:  This
          only changes the contents of the Photos  subdirectory not of the
          Tags subdirectory in the archivedir directory.

    -a    By default the script will try to create relative symbolic links
          from  the  directory   taglinkdir  set by option -l to the photo
          files under rootdir given by option -r. Using this  option  will
          result  in   absolute  symbolic  links beeing created instead of
          relative ones.

    -H    By default the script will create soft (symbolic) links from the
          Tag-Tree to the photos. By setting option -H the script will use
          hard links instead. Please note that  hard  links  can  only  be
          created  inside  one filesystem. So your photos and the Tag tree
          have to be one the same  filesystem.  If  not  you  will  see  a
          warning about this problem and the script will not run.

    -f    In  digikam  photos  can  have  hierachical tags (tags that have
          subtags). In this case digitaglinktree would by  default  add  a
          directory for the tag and a subdirectory for each of the subtags
          of this tag. By setting  -f  a subtag is treated like a  regular
          tag  just  as  its parent tag so digitaglinktree will create all
          subdirectories  for  tags  and  subtags  at   the   same   level
          independent of the tag - subtag hierarchy.

    -Y    Create year directory under each tag directory. Year information
          is taken from "Date taken" in database.

    -i tag1,..,tagn
          tag1,..,tagn Include only images with  tags  in  the  list.  Use
          comma  as tag separator. Default is "none". Use "all" to include
          all tags at once if you really want this. Better try a list with
          only some tags first to see how long it takes to complete.

    -e tag1,..,tagn
          tag1,..,tagn  Exclude images with tags in the list. Use comma as
          tag separator. Default is "none".

    -M level_number
          level_number specify the number of directory level. -M specifies
          that  instead  of  following  normal tag hierarchy, it creates a
          hierarchy combining different tags together and not only  within
          one  tag  hierarchy  (for  example  combining  Places and People
          tags).  You have to add tags to be included by using the  option
          -i  (see above).  Depending on the level given and the number of
          tags you have included and how  many  photos  you  manage  using
          digikam,  this  option  may  take  a considerable amount of time
          (possibly more than one  hour) to complete!  level_number of "5"
          seems  to  be the maximum reasonable level to start with in this
          mode.  Options -A -C -a -H -f not tested with this option!

    -V    Verbose mode.

    -v    Prints the scripts version number and exits.


   By default this script will run with all  photo  databases  created  by
   digikam  version 0.10 as well as older version like 0.9 and 0.8. If you
   still have digikam version 0.7 then you have to reconfigure the  script

   You  have  to  reconfigure the script by setting the path to the sqlite
   binary that is used  by  the  script  to  query  the  digikam  database
   digikam.db. Since very old digikam version use sqlite in version 2, but
   later digikam versions need sqlite version 3 you have to take  care  to
   install the correct version of sqlite for the installed digikam version
   and to set the path to the correct sqlite  executable  in  the  scripts



   for digikam version 0.8x and 0.9x and 0.10x


   for digikam version 0.7x.


   A call to digitaglinktree is shown below:

   digiTagLinktree  -l /home/user/tags
               -d /home/user/photos/digikam.db

   In  this example we assume that you are running digikam version 0.10 or
   higher so that no option -r was used to specify  the  photo  root  dir.
   Instead  this  information  will automatically be fetched from digikams

   In case you want to run the script  on  a  digikam  database  that  was
   created by digikam version 0.9 or earlier you have to use -r to specify
   the root directory where you keep all your photos that are  managed  by

   digiTagLinktree -l /home/user/tags
               -d /home/user/photos/digikam.db

   In this example digikams photo root denoted by -r is /home/user/photos.

   Option  -l /home/user/tags tells the script that all the subdirectories
   and symbolic links will be placed in the directory /home/user/tags. The
   folder  was  chosen  so  that  the tags-directory is not under digikams
   photo root. You may put the tags folder inside digikams  photoroot  but
   this  is not the preferred method.  Because the link directory contains
   only links this tag structure does hardly need any additional space  on
   your harddisk.

   digiTagLinktree  -r  /home/user/photos  -l  /home/user/tags          -d
               -i People,Place
               -M 2

   In this  example  if  you  have  an  image  with  the  tags  People/me,
   Place/home  from  1970  it will create the following directory (link to
   the image under _all directory)






   same starting with /Place ...  same starting with /People ...


   digitaglinktree  was  written  by  Rainer  Krienke  <krienke  at   uni-

                             16 Aug 2006                digitaglinktree(1)


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.