Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do you keep your files organized on macOS?
174 points by wassimdotis 45 days ago | hide | past | web | favorite | 140 comments
I tried to use Finder's tags but failed to keep things organized everytime. Are you using a specific app? Do you have some "tips" to keep a setup clean?

I do all document management with an app called DEVONthink. I’ve been working with digital paper apps for years, and DEVONthink absolutely crushes everything else. I put everything in it, and I sync it between devices using WebDAV via Seafile, which also works to get data offsite in case the house burns down. It’ll do encrypted databases, and it has mobile apps that work great. I scan documents directly into it, tag them, and sometimes link them from multiple folders, which Devon will do without copying them (or I can also copy them if I need to). It has fuzzy search capabilities and automatic OCR that is lightning fast. It’s one of a handful of apps that are always open on my desktop.

Documents aren’t stuffed into some database, either. They’re indexed and stored in a folder hierarchy that you can still access. This makes it easy to search and find them with tools like Alfred or Quicksilver or Spotlight. You can open them directly using apps like Word, and Devon doesn’t care. Devon also has an inbox you can use with Finder, so when you drop a file into the folder, it automatically moves to an Inbox folder in Devon for you to process and move to a final destination within the app.

It’s truly a fantastic piece of software.

I found DevinThink at the end of last year and ended paying up for the full premium version for ocr when they had on a Christmas sale. Not sure why I never seen it before as it’s been around a very long time.

I used Evernote extensively for notes + going paperless. I was never comfortable and know better than storing private documents such as bank statements in Evernote (someone else’s computer aka cloud) but it was convenient and worked well.

I’m now slowly migrating Evernote content to Devonthink. It works extremely well, it is powerful and no subscription, it’s not cheap but as a dev I know development isn’t cheap and the price is justified for its functionality. Like you said you can get all the data you put in back out easily no lock in. Sure it’s not as shiny as newer hyped software but it works and is functional. I have some Hazel rules setup for example auto file downloaded statements.

What WebDAV server are you using? I tried NGinx but had issues as NGinx doesn’t fully support WebDAV, it was just that I already had a NGinx server running. WSGIWebDav seemed to work ok testing but not set it up properly yet on my NAS, wasn’t sure about trying Apache. My idea is to use WebDAV with all access via VPN to get same sync functionality as Evernote. WebDAV for syncing completely makes sense and was another reason I purchased it.

I never got the hang of Devonthink and couldn’t get into the habit of using it for all (or even most) files. How did you get started with it and what resources, if any, did you use? Do you always only index files (while they remain in whatever folders you have left them) or do you also import (copy into it) too?

I went through their whole tutorial video section on the site, and a complementary section on how other people use Devon (author, lawyer, some other types). It took me a couple of nights of watching videos before bed to get my head around it.

Then I created some folders for large groups, like "Documents" at home or "Projects" for work, and broke it down from there. I don't have more than maybe 4 levels under anything, except where there are year/month breakdowns.

AFAIK Devon doesn't work outside of its own folder/database. It doesn't index everything in my ~ for example. I create stuff in Devon or drag stuff into it from outside, holding down CMD so that it moves instead of copies.

Within Devon I'll sometimes need something in two places (all receipts and tax-deductible receipts, for example), so I'll use Devon's "replicate" function to make a pointer to the same doc. For work stuff, I have templates (release_plan.md) that I'll "duplicate" to a new project. As long as they're the same, Devon has an icon that says so, but as soon as I edit one, they diverge into independent docs.

Just curious, what kind of documents you keep in there? I have thought about it and even have a scanner but the truth is I don't seem to have anything that's actually worth saving? I have maybe 20 documents that I actually need to keep and at that scale a simple folder full of PDFs works just fine.

Everything. I have databases for home and work. In the home database I have top-level folders for me and my wife (for personal stuff we each might store), documents, invoices and receipts. The Documents folder has all sorts of delineation - banking, animals (pet passports, vaccination history, etc), businesses, insurance, investing, legal, medical, peoperty, radio (N1GMA), taxes, vehicles, vendors, etc. I scan everything. Contracts, receipts for things I might want to return, receipts for tax deductions or expenses, manuals (usually a PDF download), bank statements, property documents, spreadsheets related to home projects, literally everything that exists on a piece of paper that might be valuable in the future. I'm from the US, live in Chile, and have residency in Chile and Panama. There are a lot of legal docs related to those processes that go into Devon. I own a business in Panama, so everything related to that is also stored in Devon. I travel, so if I'm in the US and need a document related to something from another country, I know that it's on my laptop or accessible from my phone via the sync.

I also use Devon to rip web pages, either to save as a bookmark or as a one-page PDF, so when I find something useful for work or around any idea that interests me, I'll put it in Devon instead of a Chrome/Firefox/Safari bookmark. I never remember what's in the URL of a bookmark to search for it, but I do remember the content. I can search in Devon, find the PDF, and if necessary, click the link to go back to the webpage.

I write content for part of my job, so I'll use Devon for brainstorming or outlines, all in Markdown. I've written a little snippet for Keyboard Maestro so the Cmd-N in Devon asks me what type of document I want to create (markdown, plain text, or rich text), and then it creates that in the folder. If I'm doing basic stuff, like taking notes for a meeting, I just work in raw markdown, but if I'm actually formatting something like a blog post, I'll click the "Open Externally" button to open it in Macdown. I'll make action items and after the meeting transfer them to Taskwarrior for execution. I don't need to remember what happened in every meeting - I just need to remember to read the notes.

I'll collect images for blog posts and store the whole thing in a subfolder under Projects/Content/Blog/{article-slug} so that everything is nicely organized. I use the Search function for those "I know I saved something about {foo} a few weeks ago" moments. Otherwise, I jump right to the project I'm working on and am confident that everything related to it is within that folder.

I've had too many times where I've gone looking for something that I saw on my desk a few months back, and it's gone. Invariably I'll have the receipts for every other thing _except_ the really expensive thing that just broke. With Devon I no longer have that problem. I'm pretty disciplined about scanning receipts every weekend, but I definitely have to stay on top of it for the system to really be effective.

I do the same thing, but I just scan with Fujitsu ScanSnap and dump in a huge folder in Dropbox. They're OCR'ed and named with the date by default, and that's enough that I can basically always find what I want.

That said, I rarely need anything in that folder beyond 10-20 documents like passport or birth certificate scans. To the point where I wonder if the scanning is even worth it. Why don't I just toss all that stuff in a big box (so roughly sorted by time) and go through it in the rare event that I need something someday? I do set aside tax documents when they come, and other "action items", so those are a different case. I'm talking about just the stuff I scan for archival purposes. Seems really unlikely that I actually need that stuff in digital format.

For non-paper stuff, I use Evernote. There again though, I have dozens and dozens of notebooks and stacks of notebooks that hold my thousands of notes and it's getting overwhelming. It's getting to the point where I just use my "recent notes", my 10-20 shortcuts for notes I use all the time, and search for everything else.

“Why don't I just toss all that stuff in a big box (so roughly sorted by time) and go through it in the rare event that I need something someday?”

This is basically what I do with nearly all my paper records. It's a sort of JIT filing system. “Writes” into the document store take very little time. I just dump everything into a folder for the current month. I keep a ring buffer of 12 months worth of docs. When a dirty buffer comes up as current, I quickly sort through its contents for the rare item that needs to be preserved for longer than its already year-long storage, file it in a more persistent place, then toss the rest.

This comes at the expense of making “reads” from the document store more expensive. But as you point out, fetching docs from this system is relatively rare. It's more than worth the time (and cognitive overhead) to have to occasionally flip through a couple date-delimited folders to fetch a document I need to retrieve.

Its like Amazon Glacier for your files.

> I rarely need anything in that folder beyond 10-20 documents like passport or birth certificate scans.

You trust Dropbox with that sort of thing?

Yes. Why shouldn't I? What's the concern exactly?

They could be scanning things around to find patterns of human relationships from face recognition, could have backups that persist forever after you delete or provide data to government or whatever and you won't know. Privacy policy doesn't mean shit unless you can prove it's been broken.

I really don’t care about any of that.

EasyFind by Devon is a great search app too, and it's free.


Excellent. Thanks. I have been looking for exactly this type of software. Trying it now!

      L python/
          L project1/
          L ...
      L dotnet/
      L web/
      L work/
      L ...
      L school/
          L Spring2019/
          L ...
      L personal/
      L work/
That's about all I really access other than Downloads which is a huge mess that gets purged every so often. Anything of lasting value gets moved out of there asap.

~/Documents/ is backed up to iCloud so I can access them anywhere. (Tip: Any directory you don't want to be backed up can be suffixed with ".nosync" e.g. SecretStuff.noSync).

This all started after getting into Go, which mandates a central directory under which all Go code is stored. [1] nesting scope also helps namespace resources.

[1] https://golang.org/doc/code.html#Overview

Incidentally, Go doing that made my first foray into it a very easy "Oh, yeah, this programming language isn't gonna be for me." decision.

Go modules has removed that restriction, although previously you could also get around it by avoiding Go’s build system (e.g. use Bazel instead). Some people would also just stick their go code in <repo>/go/src/example.com/pkgname, which is not that different from the way you might structure Java code anyway.

This is similar to my setup, except in place of iCloud Document Syncing I have a Syncthing folder. I like and use iCloud but it’s a little too easy to accidentally sync things that shouldn’t be synced if cloud Docs/Desktop is enabled. With Syncthing, I have to take the explicit action of placing items in my ~/Sync/ directory.

Folders to the rescue. /s

But really, that's usually all you need to organize.

While I tried DEVONthink and have even written a personal document management system myself in the past, I have come to realise that no proprietary system will last forever. So I went back to files, folders, naming conventions and a good search tool + Finder replacement.

As to the conventions:

* I follow the recommendations of a German Professor named Loehn [1]. Prof. Loehn recommends to name every file with three parts and add a datestamp to the file. For example: "Programming_Node_Async-2019-03-07", a three-part taxonomy, going from more general to more detail.

* Every file goes into a folder. Every. So I need to build a good folder system.

* Every folder is in ~/Documents/FOLDERS

As to the tools:

I use Alfred (not for search, but for creating keyboard shortcuts to start my essential tools with a key combination).

Then I use HoudahSpot.app for search. It is a better interface for Spotlight search. It allows me to save searches as templates, see search results in a table, which is super important for me to narrow the results down, exclude folders etc in a very easy way. It is my personal knowledge management tool.

Finally I use "Path Finder" (PF) as a finder replacement. Whenever I am in a folder, I can hit `Shift+Cmd+F`, which will focus on a field that will let me enter keywords. PF will start to filter my folder based on my input. So I can focus on what I need. PF is a gorgeous replacement for the Finder app with many enhancements.

The combination of all this will allow me to find every file, every project, every folder from within the past 15 to 20 years in a split second.

Side note:

1) I don't keep files on the desktop either. Rather I have a temp folder named INBOX on my desktop where everything will be put in to be processed into ~/Documents/FOLDERS/(subfolders), and I have the discipline to empty ~/Desktop/INBOX regularly.

2) My programming projects go into ~/workspace/

[1] inventor of Loehn Method, which is a methodology like "Getting Things Done" (by David Allen)

Have you investigated symlinking INBOX folder so that its real location maps to a location inside your ~/Documents/FOLDERS location so that you only have one place to worry about all files?

Thank you for the suggestion. That is a good idea.

No system of organization works for everyone.

        ... bunch of Git and SVN repos ...
        ... Git repo full of text files ...
    ~/Music/<year>/<num> <name>/
        Songs grouped by year,
        PCM bounces with name + date
    ~/Pictures/<year>/<num> <event>/<num>
        Originals, + edited as copies
        Unceremoniously dump everything else here
“Clean” is overrated. Storage is cheap. Only clean things as much as it helps you find things. Spotlight is pretty good at finding things. I use tags to label how “good” something is, with red = excellent, orange = good, and yellow = has some value.

All articles are renamed so that the filename is the title of the article.

Desktop is scratch space for anything that I’m working on at this particular moment. If I’m not working on it now, I drop it in ~/Misc/$num++ or delete it. I purge files about once a year just to keep garbage from filling spotlight results, and only secondarily to keep free disk space.

Someone had previously shared johnny-decimal, but I have yet to use it to reorganize my files.


I like this concept. Doubt I'll ever use it, but it sparks the same nice pleasing feelings in my brain that I get in a library or well-organized filing cabinet.

Thank you for sharing this! I have always organized my directories similar to concepts explained here but the introducing of decimals adds that extra attribute that helps with searching records in the future.

I started organizing my local files and Dropbox. I'm hoping to eventually organize my Personal and Work Google Drive as well.

I am using the Johnny Decimal system for my organization. It took me some time to get all my stuff in this structure but now it is very intuitive to me and I always know where everything is.

Interesting, thanks for posting it. Somewhat related (my system): https://github.com/archimodels/hamster-system


What about customer-specific files... a small business would hope to have more than 10!

Take a look at cygned's comment[0] and how the author[1] still breaks the rules with sub-folders.



I don't use the Documents folder and have it `chflags hidden` in the Finder. Desktop is always empty. `data` contains documents, while `db` contains databases and datasets for research. `var` is mostly vm images. The others I think are self explanatory.

`work` and `src` are synced to my linux computer at work via syncthing.

    [k2enemy@indy ~]$ tree -L 1
    ├── Desktop
    ├── Documents
    ├── Downloads
    ├── Library
    ├── Movies
    ├── Music
    ├── Pictures
    ├── Public
    ├── bin
    ├── data
    ├── db
    ├── etc
    ├── src
    ├── var
    └── work

Thanks for mentioning synycthing...I'll check it out. Right now I have a series of rsync scripts as cron jobs that keep my stuff in sync on multiple machines.

I take a somewhat similar approach, where I replicate standard Unix/Linux directories in my home directory: src, lib, etc, bin. It works pretty well, but has some limitations.

Having some more context would be nice, but here's some tips as a web developer.

* Don't save files on the desktop.

* Create a Projects or Dev folder in your home directory and make a folder for each project. (For Web development, I use Laravel Valet which automatically makes a foldername.test vhost inside ~/Dev.)

* My Downloads folder is very messy. I could probably set up a job to delete files older than 6 months, but I have plenty of space, so no need (yet).

For managing folders that collect cruft, or for doing things like deleting screenshots from the desktop after some period of time, I use Hazel. It’s great for menial maintenance tasks.

Hazel looks very interesting, thanks!

I've been using ~/src/HOST/ACCOUNT/REPO pattern for all source code since playing with go... host could be github.com or GROUP.visualstudio.com .. account can be an account/group/project name and repo is the individual code repo. Local temp things ~/src/local/PROJECT/REPO

I have also taken to a few setup scripts that ensure tooling is installed, and checks out the repos in their respective directories.

Another vote for Hazel. I also use Yoink, which is sort of a drag-drop shelf for files that you're trying to move from one place to another. Drag them to the Yoink shelf, go do some other stuff, then drag them off of the Yoink shelf to their destination. For screenshots and images I'm saving on the web, I no longer even allow them to save to the desktop. I perform the screenshot (or drag from browser), drag it from the new Mojave preview widget to Yoink, then drag them to the destination. They're never saved in Downloads or on my Desktop.

Don't save files on the desktop


Pros: super easy

Cons: It's a global namespace and easily cluttered, and the clutter is visible as the default background of your display.

It's like "saving things" on my physical desk - a bad habit I tell myself not to do, but still find myself doing. (chucks a few things that have been on my desk).

> It's like "saving things" on my physical desk - a bad habit I tell myself not to do, but still find myself doing. (chucks a few things that have been on my desk).

But on a physical desk I don't have options to sort, search etc. I do on the mac. I use the desktop as place for non-critical files everytime (like a screenshot that I have to attach to an email, or to export a image without background that I am going to use on a ppt). Basically just as a temp folder.

It is absolutly cluttered, but the ability to drop a temporary file there without thinking of structure or what it relates to trumps the clutter it creates.

Besides, with the addition of Stacks (https://support.apple.com/en-in/HT209101) it makes everything more manageable.

Everything personal is in ./Dropbox and everything work related is in ./Google Drive

How my work and personal files are organised was a source of frustration and annoyance for _years_, I'd be constantly fighting a sisyphean battle of organising the ever growing chaos; then I had a realisation, hierarchical folders/files will _never_ map to my mental model and there's no perfect system. I've learned to live with the chaos.

I'm getting closer and closer to the "just dump it all in a huge bucket and search if you need" strategy. Like many here, I've tried to keep things semi-organized but it's a constant fight against entropy. And filing tens of thousands of emails and files every year just so I can access the 1% that I might need later seems dumb. Why not just search? It might take 10x as long to find via search as it would if it was nicely filed, but if you only need 1% of the files in the long run, you still come out 10x ahead.

Years ago I stopped filing my physical paperwork and instead just scanning with the Fujitsu ScanSnap, which creates searchable PDFs. It's been amazing. I almost never need any of that stuff, but it's there if I do. In fact, given how useless all that stuff is turning out to be, I'm tempted to even stop scanning and just put in a big box and forget about it. If I need it someday, I can dig through the box and find it. Now that I have several years worth of files clogging my Downloads folder, it might be time to just take the same approach there.

I save everything on the desktop, or in a folder on the desktop. Sometimes I make subfolders in those folders. Horrible, but it works!

Generally agree with ppl who say that searching is more important than organising. I use Alfred to search, but I think the default Finder app is quite good these days.

Most important thing is having a consistent filenaming convention. This helps you find files via search. I use 'YYMMDD_HHMM name' if I authored the file or 'YYMMDD_HHMM [sender] name' if someone emailed it to me.

Tangentially, what I'm really happy with is how I manage my web bookmarks. I don't use browser bookmarks or folders. I save bookmarks to Pinboard.in, a cloud service. Then there's a nice Alfred extension which allows me to find them (http://www.packal.org/workflow/alfred-pinboard).

I don't have pics anywhere. That's all in Photos app/ iCloud. It's very cheap, something like $1 per month.

I use Backblaze to backup everything to cloud.

Have tried all apps out there, even the "Database" ones - but it's not portable and it's an instant lock-in. Plus most of the Apps bind to folders anyway, so you'll have a lot of "junk" that you have no idea what it is.

What I've found to work is this.

Main root folders few and named easily.

- Customers

- Internal

- Private

- VMs

All sub-folders have numbers, so they can always sort by name so they're always in the same order.

00 - Tests

10 - Code

11 - Code (Testing)

12 - Code (Other)

20 - Design (Sites)

25 - Design (Other)

30 - Services

35 - Marketing

40 - Apps (Web)

41 - Apps (Hosted)

50 - Docs

51 - Guides

60 - Sysadmin


This creates a logical and consequential structure that's easy to update, change and manage and you can have many levels.

Just consider your numbers for your use-case so you won't run out and sub-numbers can be unclear/messy to look at and navigate.

For managing downloaded files automatically, I use Hazel.

It's kinda funny. Classic MacOS had a spacial file manager, so folders and files stayed where you put them. I'm guessing that isn't true anymore? This kind of thing seems like a regression.

I found we didn’t appreciate the spatial thinking ability of human brain enough. Right now what we got is the tech that gives us shallow 2-dimensional way ‘browser-style’ to interact with digital things, for the sake of convenient and less clutter.

The same thing can applied to physical books. No matter how convenient e-book reader is, it NEVER give me the same experience. For physical book, you can just feel the progress of story just by looking at that thickness of the book, or you can tell WHERE the event in the story happened (e.g. at top right section of certain page, for example) Can’t do that with e-book, every page is the same, not to mention when you change the text size and it reflow the paragraph...poof! Gone.

Somehow, the physicality of physical book made me read it till the end. Yes, the Kindle is also single-purpose device made for reading, but also a touch away from ton of books in your library, too, which is distraction in another form.

(and no, I don’t care for inky or old paper smell)

I heavily use the keyboard to jump to certain folders in Finder, e.g. "p" jumps to "projects". Not possible with this system unless you remember each and every number.

I don't go that far, just let alphabetical work.. I do prefix `!` or `_` in front of a couple directories to push them to the top in my editor though.

Out of curiosity, why wouldn’t you want them to sort alphabetically?

Alphabetically sorting it, would make it harder to find and use what you need the most - but by using a numbered structure you can have the most used folders at the top.

Also, I've found that I remember position easier than visually looking it up alphabetically.

You could just use four digits, 5001 - Midfile stuff, 7000 - End stuff, 0999 - Fairly upwards stuff.

No need to feel so cramped then.

Exactly, but I've used smaller numbers to keep it compressed and i plotted all the folders i need in advance.

Like i wrote, consider your numbers for your needs.

In a big tree, no tags. It has taken a little while to figure out the shape of my life, but things now fit pretty nicely. I think the work of figuring out the one place where each thing fits is mostly valuable, not overhead. Having a deep tree allows me to incrementally organize files by pushing them partway down toward their final destination when I don't have time.

The biggest current challenge is all the tools that are trying to pull me away from a filesystem. Google Docs has pretty much been a disaster for organization, and I don't use--even for collaboration--unless I absolutely have to. Similarly, Evernote has lost its charm for me. I guess I'm in a minority here, preferring organizing to searching. It gets hard for me to make sense of old documents when they're out of context.

    - Documents
      - 1-Education
      - 2-Teaching
      - 3-Software-Engineer 
        - Unfold-Studio
          - unfold_studio
            - .git
      - 4-PhD
        - Research
          - Active-Projects
            - Text-And-Code
              - Studies
              - Publications
      - 5-Consulting
      - 6-Personal

Slightly off topic, but I'd like to argue for keeping your information in (backed up) local-filesystem files in the first place. I work with collaborators at several universities. Google seems to be pushing defaults toward institutional ownership of documents. I can see why institutions would like that, but there's no way I'll make my long-term access to files dependent on someone else's permissions (or Google randomly, unaccountably deleting my account).

I find virtually every taxonomical system insufficient, whether it's a folder hierarchy, tag cloud, etc. Because of English's profusion of synonyms (on top of necessarily murky category definitions for the world, generally), finding a consolidating duplicates is its own war of attrition with myself. So I mostly store things in a handful of very broad topical folders and let mdfind (Spotlight) do all the heavy lifting of finding things I need. The filesystem hierarchy isn't “clean” in this case, but it doesn't matter because I rarely need to rely on it for finding what I'm looking for.

This system does not lend itself to concordance building, browsing, or evincing topical relations, but I'm rarely needing that outside the domain of a particular use case. So if I'm researching for a paper, for example, I use Zotero to map out connections between bibliographic references. It's a more constrained realm where tag management is less arduous.

I basically have two trees:

1. Software; organized by domain name in ~/software, containing all git repositories I work on (~/software/github.com/user/repo)

2. Documents; stored in ~/Nextcloud, synced with a server. In there, I have a nested system of Johnny Decimals (https://johnnydecimal.com) - nested, because I manage multiple projects which itself use that format again, so

    ~/Nextcloud/10-19 Companies/10 Company A
    ~/Nextcloud/10-19 Companies/11 Company B
    ~/Nextcloud/10-19 Companies/12 Company C
My desktop is my temp folder, everything on there will be "resolved" within a day or two.

This way, I have all my documents synced and available on all my devices. I do not use Finder tags but rely heavily on Spotlight search.

I don't use tags at all. I just use good old fashioned directories. My directory structures go pretty deep.

Neither do I. I find that tags are "optional" so they aren't used 100% of the time, but you are forced to place your file in a folder somewhere.

Folders are just mandatory tags

More like categories, no?

Most things that I want to keep organized get split into high-level folders.

Each of the high-level folders contains a folder called `_archive` where I move old clients or projects into, this way the organization-level folders only contain things I'm actively working on.

Then I have `~/Downloads` and `~/Desktop` which are both a bit messy and get purged (Downloads) or reorganized (Desktop) from time to time.

I keep all my development projects in ~/Workspace. Everything else goes in either iCloud Documents (if they're important documents) or in ~/Documents if they're not. (I got the 200GB iCloud subscription btw).

I use ~/Desktop strictly for transient files, which I delete frequently. I still let Time Machine back it up, though, in case I accidentally delete something I meant to save. Time Machine has saved my life from accidental deletes more often than I can recall.

Thinking about it, my local storage is quite lean. Ever since I started using iCloud for photos and documents, my local storage has only been used for git repos (and apps, of course).

For my work laptop, I use a single ~/Workspace directory, with ./GitHub, ./Local, and ./Personal within that.

All of my non-code stuff is in misc. app-specific cloud services: Google Drive for work stuff, Ulysses for personal notes/writing, Things for tasks etc. I also use KeepIt for bookmarks, which I really recommend.

I've spent an inordinate amount of time in my life trying to over-engineer my productivity with new apps, tools, or systems that I never end up using.

Some general tips:

- Don't try to solve problems you don't have yet. - Keep it simple.

I have some network folders mounted to ~/shares using sshfs that are automatically mounted and remounted with a cron job.

On my desktop I have _Process as a working folder for stuff that is 100% temporary. I clear this folder every day or so. This is purely for those one-off things like an image I'm posting to a site, music that I'm tagging, etc.

I have a second folder, _Projects that is for current projects -- stuff that I've 'checked out' of my NAS. This folder is automatically backed up every day regardless, but I also sort the files and clear out the auto-backup folder once its been sorted.

Every project folder has its own _Process folder that has all of the temporary working-files that I can later delete, but will need until proofs are sent off. This folder will have any notes, fonts, images, etc that the client sends.

This setup isn't fancy by any stretch, but it gives everything a home. When I start a new project I start off with mkdir -p ProjectName/_Process and fill that up first. I also rename everything that is sent to me so the file names make sense.

[1] https://formulae.brew.sh/formula/sshfs

Mari Kondo Mac edition:

Google Drive Personal for all personal files : photos, tax returns, etc. Only sync files actively touched in last thirty days.

Google Drive Work for all work files : presentations, spreadsheets, contracts. Only sync things I've actually touched in last week.

Github for code projects. 60 Day Minimum. ~/Documents/codeWork

Anything that is not filed within 30 Days > trash.

Admittedly my Google Drive is a bit gnarly, but the search functions are pretty solid.

For source code I keep a fairly fixed folder hierarchy. I use ~/<company> for work stuff and ~/devel/ for personal projects and experiments.

I know a few people who use tags effectively. I never found it to work for me either.

On the other hand I find Spotlight to be pretty good at finding stuff. I use It extensively with relatively flat folder structures.

I typically go to the folder I want and then use spotlight to find whateverIm looking for.

Spotlight doesn't work great for me. I have a large number of e-books and documents in my home directory and Spotlight is likely to return the most recently added books even if they are completely irrelevant to the search terms.

Results are a little better, sometimes, if I search specifically in a given folder and especially if the terms are in the filename. But it really should work globally.

Mac's Finder is total garbage compared to any other file browser I used in my opinion, when I switched from Windows I remember some features missing and nothing was better. Maybe tags, but I haven't seen anyone use them... I found tags useful to mark episodes of shows I watched but nothing else really.

I have everything in designated OS folders (Pictures, Videos, Documents, ...) and a new one called Projects. Projects used to be part of Documents, until Apple one day decided it's time to sync Documents to the iCloud (with introduction of APFS), which corrupted my projects folder and just straight up removed some files (I don't have every toy project in git), so some (5+ projects) are broken now. (note: I did everything to not have that folder synced, but it just wasn't respected so yeah...).

iCloud contains important documents (subscribed for 200GB extra space).

Since that fuckup with document/projects I subscribed to Backblaze for full system backup.

Downloads are split into multiple subfolders - different browsers, different browser profiles (work/personal), torrents.

I've not figured out how to organize all files on my filesystem, but at least for my notes, I found that trees just don't cut it. I ended up writing a visual studio code plugin called vscode-nested-tags that allows you to add arbitrary tags to any markdown files. These tags can also be nested ala Bear's and Notable's tag system.

I've found that this helps a lot for organization and allows me to not be constrained to the file system for organizational purposes. I found that often times, tickets for specific features turned into useful writeups about the systems that the feature touched and I wasn't able to capture that with a file tree.

The plugin can be found here: https://marketplace.visualstudio.com/items?itemName=vscode-n...

Rather than worrying about the perfect file structure layout, I focused more on optimizing indexing and search via fzf. IMO it's a fantastic fuzzy finder for locating content on device via your terminal.


I love fzf. I recently discovered that installing a fast search tool like ripgrep makes fzf _way_ faster over large directory trees.


For code I usually use


  ~/projects # for projects that span multiple languages

  ~/courses # For the various programming courses

  ~/valet # PHP projects using Valet+

  ~/devilbox # For Dockerized



For notes I use Inkdrop and split things by hobbies/projects.

One thing I've been having trouble organising is photos. More specifically, organising original and retouched versions. I've come across one solution which is to do this:



    SpringOriginals/ # Keep original photos here.

    SpringAffinity/ # Save Affinity Photo files here

    SpringExports/ # Save exported re-touched photos here
I quite like this solution, but I'd be interested in knowing if there's anything better.

A better description of your problem and what you're trying to achieve would get better answers.

I use the same organization on all of my machines.

Source code goes into ~/src/, each project in its own directory. In some cases I'll group projects by language in their own sub-directories, for example ~/src/lisp/

Music goes into ~/music/ with a sub-directory per artist, but some genres get their own sub-directories, with artist sub-directories under that.

Photos go on a dedicated external hard drive.

Books and PDFs go into ~/books/, or one of the topic based sub-directories underneath it.

Everything else goes into sensibly named sub-directories in $HOME. If I get a lot of similar directories (2018-taxes, 2017-taxes, etc.) I'll group them in a sub-directory.

I just use Finder and don't worry about it too much.

There's really only 3 main directories I'm working out of most of the time:

- ~/workspace (for work and coding)

- ~/Documents

- ~/Downloads

I don't organize or tag them. The most I'll do is use Finder's search function, but that's rare. I tend to know where things are most of the time.

similar, I also started using a Go-inspired ~/src/HOST/ACCOUNT/REPO pattern for all my source repositories, which makes that mostly easier to deal with.

For the most part, just using directory structures is all I need. When working on something temporary, I also have a second SSD mounted and symlinked in ~/Work and another for ~/Projects ... I also have a NAS for backup and hard storage.

Honestly, I don't keep files on MacOS. I upload all files I care about to Google drive, and use that directly for all editing/viewing/lookups.

For any development work, including my home dir, I create individual git repositories, and put all relevant files within that repository. You can then easily back it up on gitlab, and take advantage of all version control features.

It's only a matter of time before your laptop gets lost, stolen or fails catastrophically. You'll inevitably find yourself wanting to access the same files from multiple devices as well. Neither of this will be a problem if you keep your data in the cloud, and use your computer purely as a compute engine and local cache.

My file organisation can mostly be described as a chaos meal, an inexplicable arrangement of mostly incompatible foods thrown together onto a plate.

It's actually disgusting, but I'm lazy. A lot of my work tends to be ephemeral stuff, like downloading files and doing some analysis work so I have a folder called ~/scratch/ where I try to mostly put that stuff.

My biggest issue is I'm so lazy I often have throwaway scripts just sitting in git repositories that have no relation to the project that repository is for. It's fun returning to that repository and finding I have a bunch of uncomitted changes for files like "script.py" and "doit.sh"

-Barebone folders. Tags don't play well with terminal and other *nix filesys.

-A ~/dev folder with dev stuff in it.

-Dropbox/iCloud for important, heavily accessed content.

-Alias on the Desktop for all the WIP/very active projects (usually from my ~/dev/ stuff and synced folder w/ dropbox or icloud)

-Dock folder shortcuts for often accessed folders + grid pop-up menu so I can dragNdrop stuff.

- Also, Finder sidebar shortcuts for these folders.

- Downloads are always messy, I usually clean-up every year when I fresh install the new release of macOS.

- For images/photos/etc I tend to use dirs with year and quarter numbers, like 19Q1 as for the 1st quarter os 2019. Prevents huge dirs that take too long for Finder/Samba to index.

I tend to keep most of my documents in Dropbox or iCloud, and use Alfred to find what I want by typing a word that I think is in the title. Dropbox can search within documents too, and I try to have an organized file structure.

Source code is in a Code directory. I try to keep that directory clean - only stuff I'm actually working on. Everything is in Git and can be pulled down very quickly if I need to spin it up again.

I used to love a document database that was geared for researchers and others who have to catalog a lot of information. It's called DevonThink. I had a license for it from one of the MacHeist bundles, but it was really overkill for my document needs.

I tend to use top level folder structure of:

    - Documents
      -- <a folder for each employer>
      -- <a personal folder>
    - Repos
      -- <a folder for each language>

I also make extensive use of a little rust tool I whipped up which tags file paths with user defined tags, which are then searchable: https://gitlab.com/zwick/genie

This allows me to quickly find all file paths that are tagged with <employer #1> for instance regardless of where they are all from within a terminal.

I use Forklift [0] as a Finder replacement. I don't need most of the extra features but it is much nicer to work with.

[0] https://binarynights.com/

I’ve used Path Finder [1] myself in the past.

[1] https://cocoatech.com

May seem silly, but I forgo all the default folders (except Downloads sometimes) and use the Desktop. On my Desktop, I have one folder: All

Inside that is everything, and the desktop then has shortcuts into that and a single "To Be Sorted" folder that I throw things in when I'm lazy (and clean up weekly).

My All folder top level:

1-Life (taxes, banking, retirement planning)

2-Philosophy (notes, papers, readings)





The numbers keep it ordered by use/importance and I usually review and change the top level yearly.

In the end, file organization has to be something you consistently work at and have a good system for, regardless of OS. I don't think any tool solves that conceptual problem.

Tags are only useful if you have specific queries intended for them later. Otherwise it's a word cloud of useless overhead.

(when I last used macs) I used a regular folder structure and Default Folder X to keep things in there.

I mostly use Linux, but I use a terminal 99% of the time, so it's irrelevant. I have the same setup on a Mac.

I have a few top-level directories, and a little structure beneath that — little enough that I remember most of it. My home computer directories are Code, Documents, $EmployerName, Media, Music, Photography, Temp (excluded from the backup), Web.

Yes, those are capital letters. I think they're neater, and it doesn't slow me down since I have several Zsh settings and functions to navigate quickly:

ls ~/d/t/p.j<TAB> → Completes to ls ~/Documents/Travel/Passport\ scan.jpg

This was configured using the zsh "compinstall" function – case-insensitive and partial completions.

cd ~w<TAB> → Completes to cd ~/Web

This is because I've done: hash Web=~/Web

This is the least useful, but could be useful for people who like deep directory structures.

cd n-w<TAB> → Completes to cd ~/Code/new-website

This is because I've done: export cdpath=( ~/Code ) It's important not to put too much in cdpath, as it clashes with the contents of the current directory.

emacs m/m-s/s/m/j/o/e/<TAB> → Partially completes to: emacs ~/Code/maven-project/maven-s/s/m/j/o/e/

with the cursor after the s, because there are two possible directories. I can type "<TAB><TAB>" to see the possible completions, or type "u<TAB>" since I know that will complete to

   emacs ~/Code/maven-project/maven-sub/src/main/java/org/example/
I also have shell function for quickly finding by filename:

  f () {
        echo "find . -iname \"*$1*\""
        find . -iname "*$1*"
I'm also using the UK Dvorak layout. Either UK layout puts ~ in a nicer place, and Dvorak puts / and - in a nicer place, so although it's less effort that it might appear to a US Qwerty user to type these so much.

I gave upspin (the project that started at Google) a go but I found it a bit buggy. My dream with be to have $HOME be available in multiple machines, so that I can log in, start my text editor, my terminals, and everything in between, and they all pick the right configuration. If anyone is aware of such project or would like to build one, please let me know.

Of course, it must be more than just rsync, and it needs to be smart about file downloads, caching when necessary, but also not bloating machines when one is only curious in a subset.

EDIT: Forgot to mention, should ideally be open source.

For a start, I don’t have anything at all on the desktop. The download folder is always clean, because I either delete files or just move them to folders in documents. I am a perfectionist, and so I am calmer.

My top level directories are like: Accounts, Clients, Projects, Apps. Then sub-directories etc. I use symlinks e.g. when a client project is reused as an App or vice-versa.

Everything initially gets downloaded into ~/Downloads and then moved as appropriate. Having two Finder windows open makes this very easy. One stays on ~/Downloads and the other changed to suit the destination.

I am a heavy Terminal user, with multiple active windows, so most of my current work-in-progress is a "cd ...".

I replicate the above to a Linux desktop with rsync based scripts. So I basically perform the same activities on both platforms, e.g. LibreOffice, etc. Hardly use any Apple software anymore, notable exception being iTunes for the various iPads and iPods around the house and car.

The thing can be easily implemented with mdutils (may not be the actual name, i’m On my phone so can’t check) and bash. You can setup a few common destination folders, and watch folders such as the ~/downalods. Then you can still use tags for files, and run a bash script which read the tag of files with mdutils, then move files based on tag pattern to different destinations.

Hazel and maid both can do this, but I don’t wan to spend that much on something I can scramble in a hour nor learn Ruby. So I just use bash for this.










I keep everything in the following folder structure. ~/projects/<year>/<mmdd>-<projectname>.

e.g. ~/project/2019/0307-hnpost/

It's simple and has been working very well over the years as you can quite easily find projects based on year and on name. Older projects can be removed / pruned you run out of diskspace. Keeping thing organised is just creating a single folder. I have a ZSH alias called mkproj which quickly creates a new project.

I would recommend going with the zen of finder. I basically just throw everything into Dropbox, unless I am specifically trying to put a collection together (eg: "documents for meeting 2019-01-01"), and then use Finder.

Surprised nobody has mentioned case sensitivity yet (as far as I can Ctrl-F for); I have a case-sensitive disk image called ~/dev/ where all code checkouts live.

Been using autojump for a while to make terminal navigation easier

I give every project their own folder, and I put that in Desktop/Projects/, which I backup/sync via Google Drive.

Then I navigate using Launchbar (https://www.obdev.at/launchbar). It's a fast search tool, but it has a cool noun-verb interface that lets you find stuff and then move it/open it/pipe it through a script, etc. Couldn't live without it.

Code: each project in its own folder.

Docs: date sorted mess with a twist. In over 30 years of using a computer, I've only rarely gone back to stuff I haven't touched in months. So when I notice that old files I no longer care much about are starting to pile up, I create a folder and move applicable files into that folder for archival purposes. I've a few exceptions for important papers, like contracts and invoices.

I use folder hierarchies for broad strokes categorisation. Tags for denoting state - whether a file is a piece of work that needs invoicing for, for example. And I use Houdah Spot for searching.

I’m a writer who uses Markdown for everything, so I put MultiMarkdown metadata in files (client, invoice amount, etc) and that’s useful for searches and grouping (and for scripts to build invoices based on the tags and metadata)

I use an old (discontinued) app called DragThing that sits in the lower left corner of my desktop. It contains tabs for different project groups (Personal, Websites, Clients, etc). Each tab will have my most often used folders and I'll add / remove folders as needed.

For keeping my desktop clean, I keep a "clean-up" folder that I can sweep everything into and clear it out as needed (every 6 months or so).

I loved DragThing. It's what the useless MacOS Dock should have been.

Dropbox/ contains stuff that I’ll need when I’m away from home.

Downloads/ gets purged every few years of stale downloads.

Documents/ gets mission-critical stuff that needs to be backed up but does not need to be in the cloud.

Pictures/ has all my non-Photos photos, including a quarter terabyte of DSLR raw files.

Photos and iTunes put their stuff wherever they do.

I have files from 1999 in my home directory so I’m not sure I can offer any advice on tidying up :)

> Downloads/ gets purged every few years of stale downloads.

Do you have an automated way of doing this? I keep the Downloads/ finder tab open at all times so I periodically clean up.

Hazel, if you want a GUI tool for that sort of thing.

No. I just get tired of it and sort by filesize now and then.

`ag -g <some fairly unique string>`

I don't have a ton of files, but I'm impressed at how quickly silver searcher[0] can find things. `-g` if the filename is specific enough. A bit longer, but not too bad if I need to search by content instead.

[0] https://github.com/ggreer/the_silver_searcher

- ~/<company> for work stuff

- ~/code for personal projects

- Photos, music, documents, calendars, etc. synced through iCloud

- Other various stuff in iCloud Drive, symlinked to ~/cloud for easy access. Got a stash directory there for random files that I can't bother organizing

Everything else I assume is ephemeral and don't mind if lost.

Using Git for tech projects. Same for dotfiles. No plugins so everything just works by copying to ~.

I have moved just about everything of note off my Mac and onto Google Drive and Google Team Drive for our org. I then have access to it via Drive Stream and Google Drive search makes it very easy to find what I'm looking for almost instantly.

For active code projects I really only keep /usr/local/src on my local drive. Those are all git repos linked up to GitHub.

I don’t use tags or any software.

I have my own folder structure with my own basic rules. I keep a copy of all important files synced in Dropbox, iCloud, and an external drive just to be safe.

Just a little bit discipline to not leave files in temporary places or with random names, and to clean them up when needed.

Path, directory names, and file names are giving me enough context to find them.

I've learned not to rename the default ~/{Pictures,Downloads,Desktop,Documents,Videos,Music} as they conveniently have the same name regardless of the OS and there are many applications and default actions bound to them. Desktop blank. For everything else unix style filesystem convention - directories at the ~/, all lowercase, name 3-5 characters long.

Nothing goes on my desktop.

Things are split contextually by “where they’re syncing to”— default locations for photos and music because that’s what itunes wants, work documents in work dropbox, etc.

Most of the time when i want to find a file i use Spotlight. I don’t really care where on disk it is per se because i can just fuzzy-search for it in the GUI or at the command line anyway.

I put everything in my Dropbox folder. Then split by various categories, sometimes things spill into the root but hey.

I use Hazel to automatically move files into a "review" folder to keep thing either saved or thrown away. Just check it periodically.

I use MacOS directories as well. The top level directory is the year. The next level down is the major category, i.e. personal, business, church, etc. The next level down is the specific project under that category. I also add the date, in the form yearmonthday (20190307 for example) to the files which keeps them sorted in date order.

I have a ~/dev folders with all my git projects. Then a ~/shared folder with stuff shared with a linux server at work (synchronized using unison). Everything else is on Icloud. I usually have a few files/folders on the desktop waiting for being sorted. I've never had any use for tags.

I use this script to manage download directory.


I keep everything organized by topic and access everything with Alfred. Wrote about it in detail here:


Chronologically sorted chaos

And subdirectory after subdirectory of folders named "stuff".

TagSpaces. Some native color tagging for clean up and directory mindfulness. I use TagSpaces to mainly create a data retention schedule for tax and finance data, then per the schedule, actually delete the old crap.

I have `build` folder in my home where I keep all my projects.

And an external HDD over SMB for downloads(/Movies, /Series, /Music, /Books et and a general folder /Spam - it gets cleaned once in a while)

Pretty much it.

Like most other commenters I just create directories in my home directory, but looking at it just now I realize it is way out of hand. I need to clean things up.

I use NVAlt, a fork of Notational Velocity for notes, links, and things like that. It more or less syncs with SimpleNote so I can use it on my phone too

At ~ (tilde) "root", I have 3 major folders.

- Work - Labs (informal code projects and practice) - Personal

But I keep my files in Google Drive that are in less need of security.


Learn to love Search, but give yourself a manual cheat mode that doesn't take any effort to maintain.

I use the application "Hazel" with two tactics, one to clean up Desktop, one to clean up Downloads.

For desktop, I use a freshness rule, and then a manual lookup hack. If it's likely this file isn't changing any more, Hazel sweeps it into folder.

In downloads, I do freshness, but with a variant manual lookup hack.


What I mean by manual cheat mode or manual hack is, can I find this file very quickly using just what I have in my head, without having had to identify content and file accordingly?

For the hack, I file by buckets of dates. What I've found is, I can generally recall what I was working on when I had that file, and from that I can recall generally when I was working on it. So, if I can "file by date" with an appropriate granularity where I balance a fuzzy "when" with a glanceable number of files, then I can find it by looking in usually one but at most maybe three buckets. Bonus: date folders also make it easy to scope searches.

Depending on the nature of work, my buckets range from quarterly at the largest, to weekly at the smallest. I name them YYYY QN/FILE, YYYY/YYYY-MM/FILE, or YYYY/YYYY-WW/FILE. If I'm doing quarterly, the folders are not nested inside the year.

For downloads, I add a layer between the date folder and file: domain. I used to just use domain and replace files of same name like "latest.zip" but over time I began to value having the prior version of downloaded things. So downloads look like YYYY QN/DOMAIN/FILE.


Putting it together, my current scheme on home laptop is:


    - File by Week Last Opened > YYYY QN/FILE
      method: sort into subfolder
      trigger: date last opened not blank and last opened is not last 2 days
      date = date last opened

    - File by Week Last Modified If Not Opened > YYYUY QN/FILE
      method: sort into subfolder
      trigger: date last opened is blank and last modified is not last 2 days
      date = date modified

    - Quarterly Sources > YYYY/DOMAIN/FILE
      method: sort into subfolder
      trigger: date added not last 4 weeks
      date = date added
Hazel has additional features such as what to do with duplicates, that you can tailor to your preferences.

As a further bucketing mechanism, if you use many machines for different modalities and collect all those files into a single 'cloud' place they all can reach, you can append the machine or hostname to the dated bucket. That lets you have selective sync rules to different machines, but also find all the content in one place.


I never file anything anywhere, I just let these rules grab them and squirrel them away. If I need a set of files across dated folders, monthly bank PDFs for example, I pop open a folder, see the relevant filename, and run a search for that, then select all and send to accountant.


Code repos are special cased, within a source code management folder tree, not worked from desktop. Vagrant and Virtual Box VMs, Pictures, Media, Music, also special case managed by their tools.

I like your rule based approach. I think I'll try it for myself.

My main "problem" with organization methods, is that I feel they get in the way of my creation process.

If i'm creating a PPT and I need an icon pack I don't want to think to where should I donwload it, if the project as a folder, where to export it or whatever... Just give me the icons, right now Im creating a presentation, I could care less about how my files are structured.

The final presentation will end up on google drive, or somwhere else "safe".

Your approach allows me to do this, and keep everything organized at the same time.

I add #tags to filenames. This makes them easily portable and searchable everywhere, even when shared over the network.

You can 'brew install tag'[1] and manage them in metadata, which will also expose them in Spotlight, sorting in Finder etc. (but not so handy across OSes)

1: https://github.com/jdberry/tag

Active projects go in:


Dead projects go in:


I just use folders. My top folders are code, Documents, Music, Videos and Others.

Labeled folders within labeled folders, accessed through Finder and Terminal

Short answer: I don't.

All project files live under ~/Documents; Others go to DEVONthink.

Fun tip: Make a folder called “Developer” in ~

Take a look in Finder.

I get a folder named "Developer" with an icon of a folder with a hammer. What do you get?

Emacs with dired; also on Linux and all Bsd’s




You can right click on any file/s and select a colored label from the menu. After that you can click on any of the colored labels on the sidebar and see what files you tagged with which color.

MacOS is a UNIX system so I keep files organized there just like I do on FreeBSD and other Unix systems.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact