CLOSED: [2017-08-28 Mon 19:37] SCHEDULED: <2017-08-28 Mon> :PROPERTIES: :CREATED: [2017-08-28 Mon 19:16] :ID: 2017-08-28-filetags-tagtrees :END: :LOGBOOK: - State "DONE" from "DONE" [2017-08-29 Tue 22:52] - State "DONE" from "NEXT" [2017-08-28 Mon 19:37] :END: Update 2017-08-29: [[https://github.com/novoid/appendfilename][appendfilename]] does also rename source files of symlinks Today I added [[https://github.com/novoid/filetags/#tagtrees][a very nice feature]] to my [[https://github.com/novoid/filetags/][filetags]] tool you already have learned to enjoy [[id:2014-05-09-managing-digital-photographs][when I described you my efficient way of handling files]]. If you are familiar with the work I've done with [[http://Karl-Voit.at/tagstore/][tagstore]] and [[http://Karl-Voit.at/tagstore/downloads/Voit2012b.pdf][my PhD thesis]], you might cheer up now: filetags is now able to generate (a sub-set of) tagtrees. In short: this new option takes the files of the current directory and generates hierarchies up to level of 2 (by default) of all combinations of tags, [[https://en.wikipedia.org/wiki/Symbolic_link][linking]] all files according to their tags. With using the maximum depth of 2, I limit the execution time and number of links created to a viable, reasonable amount. Both grow exponentially with the number of tags involved. This escalates quickly ;-) But let us go back to why is it useful to you. Consider having a file like: : My new car -- car hardware expensive.jpg Now you generate the tagtrees with the new =--tagtrees= parameter. Then you'll find [[https://en.wikipedia.org/wiki/Symbolic_link][links]] to this file within sub-directories of =~/.filetags=, the default target directory: =new/= and =hardware/= and =expensive/= and =new/hardware/= and =new/expensive/= and =hardware/new/= and so on. You get the idea. Therefore, within the folder =new/expensive/= you will find all files that have at least the tags "new" and "expensive" in any order. This is really cool to have. Having a tagtree hierarchy in-front of you, you can really get the most of your filetags. Files of the current directory that don't have any tag at all, are linked directly to =~/.filetags= so that you can find and tag them easily. I personally, do use this feature within my image viewer of choice ([[http://geeqie.sourceforge.net/][geeqie]]). I mapped it to =Shift-T= because =Shift-t= is occupied by =filetags= for tagging purposes of course. So when I am within my image viewer and I press =Shift-T=, tagtrees of the currently shown images are created. Then an additional image viewer window opens up for me, showing the resulting tagtrees. This way, I can quickly navigate through the tag combinations to easily interactively filter according to tags. Please note: when you are tagging linked files within the tagtrees with filetags, only the current link gets updated with the new name. All other links to this modified filename within the other directories of the tagtrees gets broken. You have to re-create the tagtrees to update all the links after tagging files. Update 2017-08-29: today, I also added the handy "rename symbolic link source file if basenames are matching"-feature to [[https://github.com/novoid/appendfilename][appendfilename]] as well.