Johnny Decimal System
I've been using the Johnny Decimal system to organize my personal and shared files. It's working great so far. The limits imposed by the default JD numbering system help keep things manageable.
As much as I hear about the benefits of tagging1 for file systems, I really don't find it to be at all practical. Based on my experience with tagging in Calibre, I think it would be very difficult to maintain a well-organized tagging system for thousands of files. Like with physical objects, it's best to have one place for a file and then simply to familiarize yourself with your file hierarchy. In the rare case where I lose track of a file's location, tools like ripgrep are available.
I share files that are relevant to others via Samba2. Referring to a shared file's location by JD ID has been very useful.
I wrote a simple fish shell function to quickly navigate to a directory with a specific JD ID.
function jd
cd ~/*/*/$argv*
end
You would use it similarly to the cd
command like this:
$ jd 05.23
And it will put you directly into the directory with that JD ID.
A slightly more sophisticated version only looks into directories beginning with the JD "area" naming convention and has a nicer output if the directory isn't found.
function jd
set -l dir (find ~ -maxdepth 1 -type d -name "[0-9][0-9]-[0-9][0-9]*" |
while read dir
find $dir -maxdepth 2 -type d -name "$argv[1]*"
end)
if test -n "$dir"
cd "$dir"
return 0
else
echo "Directory with JD ID $argv[1] does not exist."
return 1
end
end