A file index. Add files from your file system or previously created listings and quickly search for them using a simple CLI.
Find a file
ducklet d49a241c0c fix handling of non-utf8 filenames
Our SQLite DB requires UTF-8 strings but the filenames from the file
system could use any encoding.  Ideally we'd try to find the right
encoding, but we're already using `str.encode(errors="replace").decode()`
in other places to handle filenames that don't use UTF-8 encoding and so
this is a pragmatic solution that should work for all cases, even though
we loose information - all non-utf8 chars will be converted to "?".
An iteration on this could use an encoding detection mechanism.
2023-02-22 19:57:02 +01:00
metadex fix handling of non-utf8 filenames 2023-02-22 19:57:02 +01:00
scripts update dependencies 2023-02-08 23:04:06 +01:00
.gitignore wip 2022-08-14 20:41:58 +02:00
metadex.ignore wip 2022-08-14 20:41:58 +02:00
poetry.lock upgrade to SQLAlchemy v2.0 2023-02-10 20:46:58 +01:00
pyproject.toml upgrade to SQLAlchemy v2.0 2023-02-10 20:46:58 +01:00
pyrightconfig.json wip 2022-08-14 20:41:58 +02:00
README.md wip 2022-08-14 20:41:58 +02:00
run wip 2022-08-14 20:41:58 +02:00

Metadex

Metadex is a database for file metadata. It offers a simple and powerful CLI to scan your file system and find indexed files.
It supports path mapping, fast fuzzy searching, and multiple hosts.
Limited support exists for importing of metadata from external file lists, like for example from ls -R.

It's mostly useful to access file information for files stored remotely or offline. For example it could be used to keep track of the contents of backup DVDs or other cold storage.

Other use cases might also emerge.
All files are indexed with their last modified timestamp and file size.
Since searches are quite fast and flexible the database could even be useful to query local file information, or generate statistics, or graphs like a used space map.

Example usage

metadex scan ~  # Add all files from your home directory to the index.
metadex ls '*.xml'  # List all .xml files.
metadex ls '.config/**.json'  # List all .json config files.
metadex ls .git --type d  # List all .git directories.