Find

updatedblocate 使用什麼樣的數據庫?

  • July 20, 2017

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

引用自:https://unix.stackexchange.com/questions/379725