Linux下主要有以下五個查找命令:
find
locate
grep
which
whereis
find
find命令在某個目錄下查找。
一般使用格式:
find <-option>
-pathname:所要查找的目錄及其所有子目錄(默認(rèn)遞歸查找)。默認(rèn)為當(dāng)前目錄哮兰。
-option:指定參數(shù)右遭。
-filetype:想要查找的文件類型图筹。
-action:對查找結(jié)果進(jìn)行的處理哨鸭。
常用參數(shù)
-name: 按照文件名查找文件。
-size n:[c] 查找文件長度為n塊的文件志群,帶有c時表示文件長度以字節(jié)計桑涎。
-depth:在查找文件時等曼,首先查找當(dāng)前目錄中的文件废封,然后再在其子目錄中查找渴肉。
-ctime n:查找系統(tǒng)中最后n*24小時被改變文件狀態(tài)的文件乌奇。
-atime n:查找系統(tǒng)中最后n*24小時訪問的文件
-type: 查找某一類型的文件,如:
-b : 塊設(shè)備文件疏叨。
-c : 字符設(shè)備文件蚤蔓。
-d : 目錄涮坐。
-f : 普通文件。
-l : 符號鏈接文件捷雕。
-p : 管道文件。
例子:
find . -name a* -ls
功能
在當(dāng)前目錄中查找所有以a開頭的文件浦译,并顯示它們的詳細(xì)信息叹俏。
輸出
slot@slot-ubt:~/test$ find . -name a* -ls ? 397656 ? ? ?4 -rw-rw-r-- ? 2 slot ? ? slot ? ? ? ? ? 13 12月 ?3 16:21 ./aa
locate
locate命令在系統(tǒng)的全局范圍內(nèi)查找愕掏。
一般使用格式:
locate <-option>
-option:指定參數(shù)。
-filetype:想要查找的文件類型柠偶。
常用參數(shù):
-d:指定要查找的數(shù)據(jù)庫路徑
-h: 顯示輔助訊息
-i:忽略大小寫
-q:安靜模式睬关,不會顯示任何錯誤訊息诱担。
-n:至多顯示 n個輸出。
-r: 使用正規(guī)運(yùn)算式 做尋找的條件电爹。
-o: 指定資料庫存的名稱蔫仙。
-V: 顯示程式的版本訊息
例子:
slot@slot-ubt:~/test$ locate hello.txt
/usr/share/doc/syslinux-common/asciidoc/hello.txt
注意:
locate是從數(shù)據(jù)庫中讀取數(shù)據(jù),而不是從文件系統(tǒng)中讀取丐箩。從數(shù)據(jù)庫中讀取時是讀取updatedb命令返回的結(jié)果:
而updatedb命令默認(rèn)是一天(24小時)才自動運(yùn)行一次摇邦,這就意味著如果是最新創(chuàng)建的文件恤煞,使用locate命令可能查找不到。
解決方法:
在使用locate命令前涎嚼,先手動運(yùn)行updatedb命令(需要root權(quán)限):
sudo updatedb
例子:
首先新建一個名為haha.ha的文件阱州,然后用locate命令查找該文件,發(fā)現(xiàn)查找不到結(jié)果:
slot@slot-ubt:~/test$ touch haha.ha
slot@slot-ubt:~/test$
slot@slot-ubt:~/test$ locate haha.ha
slot@slot-ubt:~/test$
使用updatedb命令更新后再查找法梯,可以找到:
slot@slot-ubt:~/test$ sudo updatedb
[sudo] password for slot:
slot@slot-ubt:~/test$
slot@slot-ubt:~/test$ locate haha.ha
/home/slot/test/haha.ha
slot@slot-ubt:~/test$
grep
和find及l(fā)ocate命令不同的是,grep命令是在指定文件中搜索特定的內(nèi)容犀概,然后將包含有這些匹配內(nèi)容的行輸出到標(biāo)準(zhǔn)輸出立哑。如果不指定文件名,則從標(biāo)準(zhǔn)輸入讀取內(nèi)容姻灶。grep命令經(jīng)常和find等命令結(jié)合使用铛绰,其中g(shù)rep常充當(dāng)“過濾器”的角色。
常用參數(shù):
-c: 只輸出匹配行的行數(shù)产喉。
-h: 查詢多文件時不顯示文件名捂掰。
-I: 不區(qū)分大小寫(只適用于單字符)。
-n: 顯示匹配的行和行號曾沈。
-s: 不顯示 不存在或無匹配文本 的錯誤信息这嚣。
-v: 反向匹配,即顯示不包含匹配文本的所有行塞俱。
-R: 遞歸查詢姐帚,即連同子目錄中的文件一起查詢。
例子:在目錄~/test下遞歸查找包含字符串"hello"的所有文件障涯,并顯示匹配行的行號
slot@slot-ubt:~/test$ grep -Rn "hello" ~/test /home/slot/test/aa:1:hello world!/home/slot/test/cc:1:hello world!/home/slot/test/bb:1:hello world!
注意罐旗,這里文件bb是文件aa的符號鏈接:
slot@slot-ubt:~/test$ ls -l
total 8-rw-rw-r-- 2 slot slot 13 12月 ?3 16:21 aa
lrwxrwxrwx 1 slot slot ?2 12月 ?3 16:04 bb -> aa
-rw-rw-r-- 2 slot slot 13 12月 ?3 16:21 cc
如果用-r參數(shù)則不顯示符號鏈接:
slot@slot-ubt:~/test$ grep -rn "hello" ~/test/home/slot/test/aa:1:hello world!/home/slot/test/cc:1:helloworld!
which
which命令將在PATH變量指定的路徑中 查找某個系統(tǒng)命令的位置,并且返回第一個搜索結(jié)果唯蝶。也就是說九秀,使用which命令,就可以看到某個系統(tǒng)命令是否存在粘我,以及執(zhí)行的到底是哪一個位置的命令鼓蜒。
例如,查看當(dāng)前環(huán)境下使用的是哪個bash:
slot@slot-ubt:~/test$ which bash
/bin/bash
whereis
whereis命令用來定位二進(jìn)制文件(參數(shù)-b)涂滴、源代碼文件(參數(shù)-s)和幫助手冊文件(即man文件友酱,參數(shù)-m)。如果省略參數(shù)柔纵,則返回所有信息缔杉。
例子:
slot@slot-ubt:~/test$ whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
slot@slot-ubt:~/test$
slot@slot-ubt:~/test$ whereis -b bash
bash: /bin/bash /etc/bash.bashrc
slot@slot-ubt:~/test$
slot@slot-ubt:~/test$ whereis -s bash
bash:
slot@slot-ubt:~/test$
slot@slot-ubt:~/test$ whereis -m bash
bash: /usr/share/man/man1/bash.1.gz
slot@slot-ubt:~/test$
更多嵌入式專業(yè)知識可訪問:http://www.embedu.org/Column/