Find
updatedb
和 locate
使用什麼樣的數據庫?
該
locate
程序findutils
掃描一個或多個文件名數據庫並顯示任何匹配項。find
如果文件在上次文件名數據庫更新期間存在,這可以用作非常快速的命令。現在有很多種數據庫,
那麼
updatedb
更新和locate
使用什麼樣的數據庫呢?謝謝。
locate
/的實現updatedb
通常使用針對其需求量身定制的特定數據庫,而不是通用數據庫引擎。您會發現每個實現都記錄了那些特定的數據庫;例如:
- GNU
findutils
’ 記錄在 中,並且幾乎只是一個文件列表(具有特定的壓縮算法);locatedb(5)
mlocate
’s 記錄在 中,也可以被認為是目錄和文件的列表(帶有元數據)。mlocate.db(5)
似乎是 C 結構的平面文件,使用 Gnu LibC OBSTACKS 宏編寫/讀取
查看來源
https://github.com/msekletar/mlocate/blob/master/src/updatedb.c#L720
https://github.com/msekletar/mlocate/blob/master/src/locate.c#L413
你可以得到類似的東西
find / -xdev -type f -not -path \*\.git\/\* | gzip -9 > /tmp/files.gz zgrep file_i_want /tmp/files.gz