CLI File Organization System

Built on 4 hours of sleep. A CLI tool that actually ships.

This wasn’t a weekend project. It came out of five months of sleeping four hours a night — JEE prep in the mornings, CS50 in the hours everyone else was asleep. This was the final assignment. The one where the scope was completely open, and that open scope was the hardest part.

The context

CS50 was the first real programming experience — the thing I’d wanted since childhood, finally structured. It added petrol to a flame that was already there. The JEE grind was supposed to be the priority. This was the escape. Completing it under those conditions proved something specific: pressure doesn’t kill output, it just makes the hours count more.

What it does

A command-line file organizer. Point it at a directory, pass flags, and it sorts your files by type — moving them into categorized folders based on a config file you define. No hardcoded extensions. No assumptions about your workflow.

Modes

Move · Copy · Dry run

Simulate before you commit. Nothing destructive by default.

Config

User-defined mappings

Extensions → categories. Parsed at runtime. No recompile needed.

Traversal

Recursive

Cleans nested directories, not just the top level

Safety by design

File systems are unpredictable. Moving files into directories where names already exist can silently overwrite data. The conflict resolution strategy here preserves the existing file first — renaming it with a .bk extension — before proceeding with the operation.

Full operation log
Reversible operations
No silent data loss
The hardest part wasn’t the code

CS50’s final assignment has no specified scope. The student can build anything. That freedom sounds great until you’re staring at it at midnight after a full day of exam prep, trying to pick something that is genuinely good — not just passable.

The decision to build a CLI tool came from a growing obsession with the command line — how much raw productivity lives in well-designed tools, how things like ripgrepfzf, and ag actually work. Building this made that concrete — not just using the tools, but understanding what the kernel is doing when you read a file, traverse a directory, or rename a path.

What this proved

That you can ship something real under pressure. That the CLI is underrated — a carefully designed workflow compounds. That understanding what the kernel does when a tool runs changes how you think about writing tools.

The post-CS50 normal felt boring because the bar had moved. That’s the point.

What’s next

Publishing this as an actual usable CLI tool — packaged, documented, installable. It’s functional enough to be useful to more than just the grader.

~4h

sleep/night

5mo

build window