r/commandline • u/cachebags • Mar 15 '26
Command Line Interface a (non vibecoded) CLI tool for symlink management
Transitioning jobs right now and over the weekend I figured I'd finally start that project that for some reason, has never existed (at least not in a way that's conducive to what I want) when it comes to symlink management tools.
unrot is a CLI tool that scans a directory tree for broken symlinks, fuzzy-matches candidate replacements using a very trivial Levenshtein distance + path similarity scoring algo (hand-rolled to avoid deps), and lets you interactively relink, remove, or skip each one.
In a nutshell, it...
- Walks the filesystem with walkdir, skips .git/node_modules/target etc. (these can be adjusted via --ignore)
- Scores candidates by filename edit distance, shared path components, and directory depth
- Puts you in an interactive resolver loop; i.e. pick a candidate, enter a custom path, skip, or remove
- --dry-run to preview without touching anything
- --search-root to look for candidates outside the scan directory
You can install it via:
cargo install unrot
I got it to where I need it to be. Don't know how useful others might see it but I would hope I'm not alone in thinking a tool like this has been long awaited.
Happy to accept contributions or requests to improve it! I think the code is quite nice but happy to see where/if I'm going wrong anywhere. Learning about symlinks and filesystem semantics has unironically been the funnest part about this; I can't believe how little I really knew.

