有沒有比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