Markdown Query CLI
Go to file
2024-07-15 11:48:17 +02:00
src update 2024-07-15 11:48:17 +02:00
.gitignore init 2023-10-25 16:33:12 +02:00
Cargo.lock update 2024-07-15 11:48:17 +02:00
Cargo.toml update 2024-06-06 19:19:46 +02:00
Dockerfile add dockerfile 2023-10-26 15:26:32 +02:00 dont search inline tags by default 2024-03-08 13:42:19 +01:00

Markdown Query

MDQ is a command line tool to query markdown documents which have yaml frontmatter.


Usage: mdq [OPTIONS] <dir>


Option Description
-j, --json Output result as JSON
-l, --limit <LIMIT> Limit number of results returned [default: 0]
--offset <OFFSET> Offset results by a factor. Useful when used with --limit [default: 0]
-f, --filter <FILTER> Filter to apply to the documents. See filter section below.
-c, --column <COLUMN> Specify output columns. You can rename the text displayed in the header using the : character like this: VariableName:OutputName [default: file.title:Title]
-s, --sortby <KEY> Sort results based on specified key
-g, --groupby <KEY> Group results based on specified key
-r, --reverse Reverse the results
--noheader Dont print header in CSV mode. Useful for scripting
-t, --inline-tags Search for inline #tags and include them in frontmatter


You can query your document using filters. MDQ uses jsonfilter, so you can query similiar to the find() function of MongoDB.


# Select documents with version 1.0
mdq -c file.title:Title -f '{"version": "1.0"}' ./docs

# Select documents which are high priority and assigned to me
mdq -c file.title:Title -f '{"priority": "high"}' -f '{"assigned": "me"}' ./docs

# Select documents which are assigned to names starting with A or B
mdq -c file.title:Title -f '{"$or": [{"assigned": {"$regex": "^A"}}, {"assigned": {"$regex": "^B}}]}' ./docs