搜尋比查找更快

搜尋比查找更快

有沒有比find.我正在/正在做:-

$sudo find / -perm +4000

但需要很長時間才能找到所需的資訊。我知道大多數設定特定權限位的檔案都是靜態/非動態的。

我試過

[$] sudo locate --all / -perm +4000                                                                                               
locate: invalid option -- 'p'

但可以看出失敗了。任何想法我如何使用locate 來做同樣的事情。

只是共享/usr/bin/locate符號連結到,/etc/alternatives/locate而共享又符號連結到/usr/bin/mlocate

答案1

不幸的是,mlocate它不會索引檔案權限,因此您必須使用 掃描檔案系統find,除非您找到具有此功能的定位實作(或mlocate自行擴展)。

答案2

正如 @shirish 所提到的,mlocate 並沒有索引檔案權限。但我還是有一些建議給你:

首先,從 find 手冊來看,-perm +mode 已被棄用,因此您應該使用 -perm /mode 代替。

-燙髮+模式

已棄用的舊方法,用於搜尋具有模式集中任何權限位的檔案。您應該使用 -perm /mode 代替。嘗試將“+”語法與符號模式一起使用將產生令人驚訝的結果。例如,「+u+x」是有效的符號模式(相當於+u,+x,即0111),因此不會被評估為-perm +mode,而是作為精確模式說明符-perm mode,因此它匹配具有確切權限0111 的文件,而不是設定了任何執行位的文件。如果您發現這一段令人困惑,那麼您並不孤單 - 只需使用 -perm /mode。這種形式的 -perm 測試已被棄用,因為 POSIX 規範要求將前導「+」解釋為符號模式的一部分,因此我們轉而使用「/」。

-燙髮/模式

為檔案設定任何權限位模式。這種形式接受符號模式。如果使用符號模式,則必須指定「u」、「g」或「o」。有關一些說明性​​範例,請參閱範例部分。如果模式中沒有設定權限位,則此測試會符合任何檔案(這裡的想法是與 -perm -000 的行為一致)。

其次,您可以嘗試加快查找速度:為此,您需要盡可能具體。例如:

find /some/path ...

會減少搜尋時間,因為您指定了搜尋路徑(/some/path),而不是搜尋整個根目錄(/)

最後,您可以排除您不想在搜尋過程中掃描的系統資料夾。例如:

 find /some/path -not \( -path /excluded/path -prune \) -name *.js

相關內容