Every year I work on many different projects, from design, to coding, to 3D design, to personal projects.

My usual model currently is to create folders for each project and after I am done with them file the folder in some kind of logical tree structure.

But, let's say I have a project that involves an ESP32 micro-controller and a specific customer. Sometimes I want to list all my projects that are related to ESP32, sometimes I want to list all the projects that relate to a specific projects, and sometimes I just want to list all the projects that I started in 2020, or any other given year.

I know tags would work well for this task, but tags are not very portable, and once you have several dozen tags it becomes unwieldy. Are there any other organizing solutions out there?

My ideal solution would be to put a README.md file inside each project folder and have some kind of system that would allow me to search the contents of the README.md files, but instead of giving me a list of those files it would return a list of containing directories.

But, perhaps there is an even better solution that you could suggest. The goals are:

  1. Portable System that can be stored on ExFAT drive, if need be.
  2. Ability to search for projects by different attributes or tags. It's fine if I have to go through all my past projects and tag them, but I would rather do that once :)
  3. Some kind of tool with UI would be nice, but CLI is ok too.

Any recommendations or maybe just a wholesale different approach to achieve the same result?

  • 1
    Since you have rejected tags, I can't make it an answer. But I think you should look at it again. Ideal for your situation wanting to classify folders and files in multiple ways. Anything else is cumbersome and you won't use it. Naming is important and I suggest an initial (not alpha) character to represent the 'type' of classification (customer, project, technology, etc.) and a tag with a digit is a date.
    – Gilby
    Jun 2, 2021 at 5:35
  • I rejected tags because they are not supported on other operating systems and are not portable. Plus, most tools on Mac OS and other OS's don't really support tags. Finally, and I know it's blasphemy, but generally tags are just a really bad idea. Links are a much better idea, and that's what I am shooting for now, with proper search-ability. I gave up and decided to write my own tool in QT and either Python or C++ to do this for me. We will see how it turns out.
    – Bogdan
    Jun 2, 2021 at 19:15
  • 1
    Why ExFAT? that hobbles all the macOS and Apple metadata and forces you to get a third party indexing solution. Spotlight still searches files from 1990 and classic Mac OS on the beta announced this month at WWDC. It seems you want a worse indexing that native and/or to make a custom indexing solution which could be awesome or an awesome waste of time depending on your budget and skill.
    – bmike
    Jun 27, 2022 at 0:20
  • Create a database - or even a spread sheet with columns for name and location and tags etc. Put the README.md data in there instead of the .md file and query the database when you need to. Structured data is usually better than plain or markdown text.
    – mmmmmm
    Oct 20, 2023 at 9:41

2 Answers 2


Using my example of being able to sort the chapters of a book by language or by title, four ways I have done something like this:

  1. Two directories, language and title. Language contains a directory for each language, other for each title. Each of those contains symlinks to all the files of that category. Don’t use hard links—when you edit one, you replace it with the changes and the other doesn’t change.
  2. Each sort criteria is a different column in a relational database. Other column(s) have all the other info needed.
  3. An HTML page with a table having columns language, title, and file:// hyperlinks
  4. Each file contains lines like “Language: Chinese” and “Title: “Trip to San Blas.” Then, grep . -type f -exec grep -il “Language: Chinese” \; will list the files in Chinese.

The key challenge probably is to maintain all relevant data in a structured fashion for a longer time.

You could put the files into the most often used folder structure (probably per client/project) and use a spreadsheet to capture all the meta data and alternative structure information. Or, if this is too cumbersome, just use a standard naming convention for subfolders (e.g. always call the folder containing the corresponding code ESP32) and use the search functionality of the OS.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .