SQLite 扩展
查询文件夹.load ./libfs_meta
CREATE VIRTUAL TABLE files USING fs_meta(
root = './notes',
fields = 'rating INTEGER, status TEXT'
);
SELECT id, rating FROM files
WHERE is_dir = 0 AND rating >= 4;SELECT id, rating, status
FROM files
WHERE is_dir = 0 AND rating >= 4
ORDER BY rating DESC;标准 SQLite,查询你自己的文件。| id | rating | status |
|---|---|---|
| notes/launch.md | 5 | Active |
| design/brief.pdf | 5 | Review |
| research/sqlite.md | 4 | Draft |
xmeta set notes/launch.md \
status=Active rating:=5
xmeta get notes/launch.md --json直接操作单个文件,无需 SQLite。{
"rating": 5,
"status": "Active"
}01 / 存储方式
属性保存在原生扩展属性或 NTFS 备用数据流中。文件夹本身就是数据来源。
02 / 使用方式
用 SQLite 扩展查询整个文件夹,用 xmeta 快速读取或修改单个文件的属性。
.load ./libfs_meta
CREATE VIRTUAL TABLE files USING fs_meta(
root = './notes',
fields = 'rating INTEGER, status TEXT'
);
SELECT id, rating FROM files
WHERE is_dir = 0 AND rating >= 4;xmeta set note.md status=Active rating:=5
xmeta get note.md --json
# {"rating":5,"status":"Active"}
xmeta unset note.md status
xmeta get note.md rating --text
# 5写入需要文件系统支持 xattr / ADS。不支持向符号链接、Windows 重解析点或具有多个硬链接的 Unix 文件写入。文件不会继承目录的属性。