Your Downloads folder, ruled by one YAML file.
Rule-based organization from the terminal. Define patterns once in YAML — fo previews every move, then puts every file where it belongs. Watch mode and undo included.
dashed = previewed · solid = moved · doubled = conflict
$git clone https://github.com/PabloJustDevelops/file-organizer-cli && cd file-organizer-cli && bun install && bun run build:cli
Pre-release v0.1.0-rc.1 · API stable · npm name pending — clone & build for now.
Define rules in YAML. Run one command. Files land where they belong.
A single .file-organizer.yaml defines what gets organized where. Conditions add precision:
filter by size, date, or regex. Priority controls which rule wins.
Glob patterns, regex, size thresholds, and date ranges. Combine conditions to target exactly the files you want.
Variables like {year}, {month}, {extension} build paths from each file's metadata.
fo organize --dry-run shows every move without touching anything. Review, then execute.
fo watch ~/Downloads monitors a folder and organizes new files automatically.
fo undo reverts the last operation. History persists between sessions — no surprises, no lost files.
Teach fo new tricks. In plain JavaScript.
A plugin is a plain object with a default export. No imports required. Add lifecycle hooks, custom matching rules, or transforms that remap file metadata before organizing.
A failing plugin never aborts a run: errors are isolated per item and reported in the result. Register it once and it loads before any file is touched.
Nothing moves without your say-so.
fo watch ~/Downloads monitors the folder and organizes new files as they arrive. Set it
once, forget it.
fo undo reverts the last operation — history persists between sessions.
When a destination exists, you choose: rename, overwrite, skip,
or newest. The preview marks every collision before anything moves.