[root@redhat ~]# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
只將二進(jìn)制文件 查找出來(lái)
和find相比,whereis查找的速度非?欤@是因?yàn)閘inux系統(tǒng)會(huì)將系統(tǒng)內(nèi)的所有文件都記錄在一個(gè)數(shù)據(jù)庫(kù)文件中,當(dāng)使用whereis和locate時(shí),會(huì)從數(shù)據(jù)庫(kù)中查找數(shù)據(jù),而不是像find命令那樣,通過(guò)遍歷硬盤來(lái)查找,效率自然會(huì)很高。
但是該數(shù)據(jù)庫(kù)文件并不是實(shí)時(shí)更新,默認(rèn)情況下每天更新一次,因此,我們?cè)谟脀hereis和locate查找文件時(shí),有時(shí)會(huì)找到已經(jīng)被刪除的數(shù)據(jù),或者剛剛建立文件,卻無(wú)法查找到,原因就是因?yàn)閿?shù)據(jù)庫(kù)文件沒(méi)有被更新。(使用updatedb命令進(jìn)行更新)
語(yǔ)法:locate 文件或者目錄名稱
作用:find files by name from one or more databases prepared by updatedb. 同whereis指令一樣,也是從數(shù)據(jù)庫(kù)建立的索引中查找,不同的是該命令查找所有部分匹配的文件,使用之前可以使用updatedb命令手動(dòng)更新數(shù)據(jù)庫(kù)。
原理:默認(rèn)情況下(當(dāng)filename中不包含通配符*),locate會(huì)給出所有與*filename*相匹配的文件的路徑。
適用場(chǎng)合:沒(méi)有文件類型性質(zhì)的模糊查找(你只記得某個(gè)文件的部分名稱)。
個(gè)人感覺(jué)locate和whereis差不多,locate比較適合與數(shù)據(jù)庫(kù)一起配合著用,locate命令可以在搜尋數(shù)據(jù)庫(kù)時(shí)快速找到檔案
[root@redhat ~]# locate passwd
/lib/security/pam_unix_passwd.so
/lib/security/pam_passwdqc.so
/usr/include/rpcsvc/yppasswd.x
/usr/include/rpcsvc/yppasswd.h
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/rpcsvc/yppasswd.ph
/usr/lib/kde3/kded_kpasswdserver.la
/usr/lib/kde3/kded_kpasswdserver.so
/usr/bin/vncpasswd
/usr/bin/userpasswd
/usr/bin/yppasswd
find有一點(diǎn)復(fù)雜,參考博客:https://blog.csdn.net/yucan1001/article/details/8451351
語(yǔ)法:find 路徑 參數(shù)
參數(shù)說(shuō)明:
時(shí)間查找參數(shù):
-atime n :將n*24小時(shí)內(nèi)存取過(guò)的的文件列出來(lái)
-ctime n :將n*24小時(shí)內(nèi)改變、新增的文件或者目錄列出來(lái)
-mtime n :將n*24小時(shí)內(nèi)修改過(guò)的文件或者目錄列出來(lái)
-newer file :把比f(wàn)ile還要新的文件列出來(lái)
名稱查找參數(shù):
-gid n :尋找群組ID為n的文件
-group name :尋找群組名稱為name的文件
-uid n :尋找擁有者ID為n的文件
-user name :尋找用戶者名稱為name的文件
-name file :尋找文件名為file的文件(可以使用通配符)
作用:search for files in a directory hierarchy. 從當(dāng)前目錄遞歸的搜索文件。
原理:遍歷當(dāng)前工作目錄及其子目錄,find命令是在硬盤上遍歷查找linux命令,非常耗硬盤資源,查找效率相比whereis和locate較低。
適用場(chǎng)合:能用which、whereis和locate的時(shí)候盡量不要用find.
例 如:
[root@redhat ~]# find / -name zgz
/home/zgz
/home/zgz/zgz
/home/weblogic/bea/user_projects/domains/zgz
......
總結(jié):
find,遍歷硬盤查找,通常使用 find / -name Filename。耗內(nèi)存。locate和whereis是根據(jù)數(shù)據(jù)庫(kù)查找,無(wú)法實(shí)時(shí)查找文件。有可能找到剛才刪除的文件和無(wú)法找到新增的文件。which根據(jù)path找可執(zhí)行文件。whereis 可以用來(lái)找相關(guān)安裝路徑和二進(jìn)制文件,可執(zhí)行文件。
當(dāng)我們用whereis和locate無(wú)法查找到我們需要的文件時(shí),可以使用find,但是find是在硬盤上遍歷查 找,因此非常消耗硬盤的資源,而且效率也非常低linux命令,因此建議大家優(yōu)先使用whereis和locate。