linux 搜索 locate whereis和which find grep
linux常用的搜索命令主要有l(wèi)ocate撒犀,whereis福压,find,grep或舞,那么他們?nèi)绾问褂镁D罚惺裁磪^(qū)別呢?下面就讓我們一起來學習一下映凳。
1.locate
- locate命令主要是在后臺數(shù)據(jù)庫中按文件名進行搜索胆筒,搜索速度更快。數(shù)據(jù)庫為
var/lib/mlocate
诈豌。搜索的時候需要先用“updatedb”更新一下數(shù)據(jù)庫仆救,否則新建的文件可能搜不到。 - locate命令的配置文件為
/etc/updatedb.conf
队询,內(nèi)容為:
PRUNE_BIND_MOUNTS="yes"
PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
其中“PRUNE_BIND_MOUNTS”為搜索限制配置派桩。yes的時候表示下面的搜索限制配置全部生效,no的時候表示不生效蚌斩。
“PRUNENAMES”表示搜索時不搜索的文件類型铆惑。上面的內(nèi)容就表示不搜索“.get,.bzr送膳,.hg员魏,.svn”類型的文件。
“PRUNEFS”表示搜索時不搜索的文件系統(tǒng)叠聋。
“PRUNEPATHS”表示搜索時不搜索的路徑撕阎。 - locate的特點就是速度快,耗費系統(tǒng)資源小碌补。但是功能單一虏束,只能搜索文件名棉饶。
2.whereis和which
- whereis用來搜索命令所在路徑及幫助文檔所在位置。它還有兩個選項:
-b:只查找可執(zhí)行文件
-m:只查找?guī)椭募?br> 舉個例子來看下镇匀,
命令:whereis ls
結(jié)果:ls: /bin/ls /usr/share/man/man1/ls.1.gz
表明ls
命令在bin/ls
照藻,幫助文檔為/usr/share/man/man1/ls.1.gz
加選項‘-b’就只顯示/bin/ls
,加‘-m’就只顯示/usr/share/man/man1/ls.1.gz
- whereis只能用來搜索系統(tǒng)命令汗侵,不能用來搜索文件幸缕。
- 借此再看2個常用命令:
命令:who am i
結(jié)果:chenfei pts/0 2016-05-29 16:36 (10.0.2.2)
命令:whatis ls
結(jié)果:ls (1) - list directory contents
命令的意思根據(jù)英文就能理解個差不多了。 - 下面再來說一下which晰韵。which命令也是用來搜索系統(tǒng)命令的发乔,它不能顯示命令的幫助文檔的路徑,不過它可以顯示命令的別名雪猪,前提是別名存在的話栏尚。
3.find
- find用來搜索文件,命令格式:find [搜索范圍] [搜索條件]
-
find / -name test.php
這條命令表示搜索根目錄下的‘test.php’文件浪蹂,如果存在'test.php.bak'也不會搜索到抵栈。要想進行模糊搜索,需要使用通配符坤次。
(1)‘*’ 匹配任意內(nèi)容。find /root -name "test.php*"
搜索root目錄下的包含‘test.php’的文件斥赋。如果‘test.php.bak’也在root目錄下缰猴,也可以被搜到。
(2)‘疤剑?’匹配任意一個字符滑绒。
(3)‘[]’匹配任意一個中括號之內(nèi)的字符。find /root -name "ab[cd]"
隘膘,這種情況下如果root目錄下存在abc和abd文件疑故,那么兩者都可以被搜到。 -
find /root -iname "tEst.php"
不區(qū)分大小寫搜索弯菊。 -
find /root -user root
搜索所有者為root的文件 -
find /root -nouser
搜索沒有所有者的文件 -
find /var/log/ -mtime +10
搜索10天前修改的文件纵势。
“-10” 10天內(nèi)修改文件;“10”10天那天修改文件管钳;“+10”10天前修改的文件钦铁。
還有幾個類似選項:“-atime”文件訪問時間;“-ctime”改變文件屬性才漆; -
find . -size 25k
搜索當前目錄下文件大小是25kb的文件牛曹。
“-25k”小于25kb的文件;“25k”等于25kb的文件醇滥;“+25k”大于25kb的文件 -
find . -inum 262332
查找當前目錄下i節(jié)點是262332的文件黎比。 -
find /root -size +20k -a -size -50k
搜索root目錄下超营,大于20kb并且小于50kb的文件。
“-a” and 邏輯與阅虫,兩個條件都滿足演闭;“-o” or 邏輯或,兩個條件滿足一個即可书妻。 -
find /root -size +20k -a -size -50k -exec ls -lh {} \;
搜索root目錄下船响,大于20kb并且小于50kb的文件,并顯示詳細信息躲履。
-exec 命令 {} \;
表示對搜索結(jié)果執(zhí)行相應(yīng)的操作见间。 - find命令功能很強大,但是相對locate命令工猜,它消耗系統(tǒng)資源也比較嚴重米诉,尤其是當搜索范圍比較大的時候。
4.grep
- 格式:gerp [選項] 字符串 文件名
grep命令主要用來在文件當中匹配符合條件的字符串篷帅。
“-i”表示忽略大小寫史侣;“-v”表示排除指定字符串。 - 再來看一下它和‘find’的區(qū)別:
find:在系統(tǒng)中搜索符合條件的文件名,如果需要匹配举户,使用通配符匹配最住,通配符是完全匹配。
grep:在文件當中搜索符合條件的字符串税朴,如果需要匹配,使用正則表達式進行匹配家制,正則表達式時包含匹配(模糊匹配)正林。 - 通過管道符將find和grep命令結(jié)合起來使用有時會起到事半功倍的效果。
以上就是linux幾個常用搜索的命令颤殴,你學會了嗎觅廓?