| Crates.io | fmql |
| lib.rs | fmql |
| version | 0.3.0 |
| created_at | 2025-04-10 19:43:09.512626+00 |
| updated_at | 2025-05-15 11:46:38.360516+00 |
| description | A fast and feature-rich file manager written in Rust |
| homepage | https://github.com/chriswmann/fmql |
| repository | https://github.com/chriswmann/fmql |
| max_upload_size | |
| id | 1628780 |
| size | 120,445 |
Because talking to your files like they're a database is totally normal.
FMQL (File Manager Query Language) lets you use SQL (sort of) to manage your files.
It puts the "Q" into "FML".
Yes it was mostly vibe-coded, I've been meaning to write this for months and this way I finally got round to it.
⚠️ WARNING: This code is buggy as hell. Use at your own risk. Don't blame me when it deletes your homework or accidentally formats your hard drive. I'm still working on it, and by "working on it," I mean "not working on it very much at all because I don't have time right now".
SELECT * FROM ~/Documents WHERE size > 1000000 AND modified > '2025-01-01'
-- Translation: "Show me all those chonky files I created this year"
SELECT * FROM ~/memes WHERE extension = 'jpg' AND name LIKE '%cat%' because who needs GUI file search when you can type a novel?ls -la but dysfunctional and with a bad attitude.fd when you can use fmql? (Everybody, actually.)# The easy way
cargo install fmql
# The less way
git clone https://github.com/chriswmann/fmql.git
cd fmql
cargo build --release
# Find all text files in your Documents
fmql sql "SELECT * FROM ~/Documents WHERE extension = 'txt'"
# Find large images modified recently
fmql sql "SELECT * FROM ~/Pictures WHERE (extension = 'jpg' OR extension = 'png') AND size > 1000000 AND modified > '2023-06-01'"
# Find executable scripts (your personal army of automation)
fmql sql "SELECT * FROM ~/scripts WHERE permissions LIKE '%x%'"
# Update file permissions (because chmod is so 1970s)
fmql sql "UPDATE ~/scripts SET permissions = '755' WHERE extension = 'sh'"
FMQL understands these SQL-ish commands:
SELECT: Find files matching specific conditionsUPDATE: Modify file attributes (permissions, etc.)WHERE: Filter with conditions (=, >, <, LIKE, REGEXP)WITH RECURSIVE: Recursively search directories (prepare for deep dives)# Find all your unfinished projects
fmql sql "SELECT * FROM ~/projects WHERE modified < '2023-01-01' AND NOT name LIKE '%completed%'"
# List all memes sorted by size
fmql sql "SELECT * FROM ~/Downloads WHERE name LIKE '%meme%' ORDER BY size DESC"
# Find screenshots from 3am
fmql sql "SELECT * FROM ~/Pictures WHERE name LIKE '%screenshot%' AND modified LIKE '%03:%'"
# Look for suspicious executables
fmql sql "SELECT * FROM ~/Downloads WHERE is_executable = true AND NOT permission = '755'"
git checkout -b feature/amazing-idea)git commit -m 'Added that thing everyone wanted')git push origin feature/amazing-idea)MIT License - Feel free to use this for whatever you like