依照檔案名搜尋系統目錄下的檔案:搜尋範圍比which要廣。不過這種搜尋方式,所搜尋的是「系統目錄下的檔案」,若是在使用者家目錄下的檔案,那應該是搜尋不到的。
(1) whereis 選項 檔案名:會搜尋系統目錄下,檔案名稱(不包含副檔名)或目錄名與檔案名完全吻合者,並顯示其完整路徑。其中,選項可以是:
※ -b:只搜尋二進位檔。
※ -m:只搜尋manual說明檔(通常位於/usr/share/man/目錄之下)。
※ -s:只搜尋source來源檔。
※ -u:搜尋非二進位檔、非manual說明檔、非source來源檔的檔案。
※ 無選項:等同-b、-m、-s、-u的聯集。
(2) locate 選項 名稱:會搜尋系統目錄下,檔案名稱(不包含副檔名)或目錄名其中包含名稱者,並顯示其完整路徑。其中,選項可以是:
※ -i:將名稱的大小寫視為相同。
※ -r:名稱可用正規表示法來表達。
※ 無選項。
註(重要!):whereis和locate指令,其搜尋是依據一個「檔案資料庫」(如locate是根據/var/lib/mlocate/這個資料庫),而非於硬碟中的逐個檔案的找(好處是式搜尋速度加快,較不損害硬碟)。這「檔案資料庫」通常每隔一段時間更新一次,使得這兩個指令所找到的資料與實際情況可能有「時差」。為避免此情況,可用updatedb指令來即時更新資料庫。
(3) find:find指令是直接於硬碟中的逐個檔案搜尋,較傷硬碟、速度較慢,但準確性是最高。以下只介紹較常用的寫法:
(3-1) find 路徑 時間紀錄 -n:乃是搜尋時間紀錄在距當前時間n天之內、且位於路徑之下的檔案。其中,時間紀錄的字面值可以是-mtime、-ctime、-atime,表示依據哪一種時間紀錄來搜尋。n是正整數,單位是天數。
(3-2) find 路徑 -newer 某檔案:搜尋在路徑底下,比某檔案更新的檔案。
(3-3) find 路徑 -user 某使用者帳號:搜尋在路徑下,某使用者所擁有的檔案。這個指令,可以搜尋到所有符合條件的檔案,不限於系統檔。
(3-4) find 路徑 -group 某群組名稱:搜尋在路徑下,某群組所擁有的檔案。這個指令,可以搜尋到所有符合條件的檔案,不限於系統檔。
(3-5) find 路徑 -nouser:搜尋在路徑底下,不屬於任何擁有者的「無主檔案」(這些無主檔案,可能會造成系統上的不安全,但也不盡然。有些可能是下載來的檔案,有些可能是該擁有者已被除名)。這個指令,可以搜尋到所有符合條件的檔案,不限於系統檔。
(3-6) find 路徑 -nogroup:搜尋在路徑底下,不屬於任何群組的檔案」。
留言列表