Linux下查找命令
轉(zhuǎn)載自??Linux下查找命令
一.Linux查找文件的相關(guān)命令
| 常 用 命 令 | 簡要中文說明 | 程序所在目錄 |
| more | 分頁顯示一個文件或任何輸出結(jié)果 | /bin |
| less | 分頁顯示一個文件并且可以回頭 | /usr/bin |
| whereis | 尋找文件工具 | /usr/bin |
| find | 尋找文件工具 | /usr/bin |
| locate | 尋找文件工具 | /usr/bin |
| grep | 尋找某字串內(nèi)容工具 | /bin |
| env | 查看環(huán)境設(shè)置 | /usr/bin |
more [文件名]
分頁顯示一個文件或任何輸出結(jié)果
其實(shí)more不是用來尋找文件的,但是一般人卻十有八九是在找文件時把它派上用場。
因?yàn)?more 主要的作用是把輸出結(jié)果顯示在屏幕上,一頁停止一次,所以例如當(dāng)我們用 ls 命令去找一個 x字母開頭的文件,而下達(dá)了 ls x* 卻仍然列出太多文件,一個屏幕看不完時,就可以配合管道符號和 more 命令:
ls x* | more
它會一屏停止一下,等待您按空白鍵才繼續(xù)往上卷。于是 more 儼然猶如 DOS 的 DIR 命令 /P 選項(xiàng)的地位了。而 more 當(dāng)主角的時候,是用做一頁一次顯示文章,例如我們想要看 /etc 里面的 XF86Config 文件,可以下如下命令:
more /etc/XF86Config
這樣,我們就可以不斷按空白鍵把這個文件慢慢看完。但是,因?yàn)閙ore 先天的設(shè)計(jì),如果您看完了這頁,想要回頭看上一頁,很抱歉,是不行的,您必須從頭再來!于是大家在使用中就干脆摒棄這個命令,而代之以 vi 或者pico, joe等文書編輯器來看文字文件了!
less [文件名]
分頁顯示一個文件并且可以回頭
less命令很好笑,取名時就故意與more 命令打?qū)ε_,你叫“更多”,我就叫“更少”,就好像你叫黑人牙膏我就叫白人牙膏一樣。事實(shí)上與什么“更多”、“更少”都沒有關(guān)系。它最主要只是為了改進(jìn)一點(diǎn):more 不能回頭看的問題!
less 的優(yōu)點(diǎn)就是可以隨時回頭,最簡單的用【PgUp】鍵就可以向上翻。
可是依我們的孤陋之見,還是用文書編輯器去閱讀文件就好了嘛,更何況 less 本身還有高達(dá) 42 個選項(xiàng),何必那么麻煩!
所以,為了您好,選項(xiàng)我們也不介紹了。這個命令目前只在 Linux 系統(tǒng)可以使用,其他 UNIX 家族尚無。
pico /etc/XF86Config
到最后,很少人再用more了。所以more經(jīng)常配合 ls在找文件的場合出現(xiàn),每天都可以上場十幾次。
所以,相信把失去主要舞臺的 more歸類為找尋文件的相關(guān)命令雖不合法,但合情合理也合于現(xiàn)狀。
whereis 文件名
尋找文件工具
whereis 是一個小巧好用的文件尋找工具,它專門用來尋找可執(zhí)行的程序、原始程序和使用手冊。
例如執(zhí)行命令:
whereis bzip2
它就會告訴您,bzip2 放在 /usr/bin 。通常,如果您確定某個東西是程序,而用 whereis 找不到的話,那就表示本系統(tǒng)沒有安裝該程序了,例如:
whereis cjoe
表示這套系統(tǒng)中沒有裝 cjoe,否則應(yīng)該會找到才對。
find [尋找的目錄] [表示式]
尋找文件工具
find 是高級的尋找文件工具,可不像 whereis 那么“陽春白雪”。但也因?yàn)樗呒壛?#xff0c;復(fù)雜到很多人用不熟練。我們盡量只舉簡單的例子。
最簡單的格式如下:
find / -name my* -print
這個意思是請它從最底層的主目錄開始找,找出文件名是 my 開頭的文件,把它顯示出來。-print 選項(xiàng)是顯示,您可把它當(dāng)做固定要加上的項(xiàng)目。
但它還可以用時間來找,例如:
find /usr -atime 3 –print
會從 /usr 目錄開始往下找,找最近3天之內(nèi)存取過的文件。
find /usr -ctime 5 –print
會從 /usr 目錄開始往下找,找最近5天之內(nèi)修改過的文件。
find /doc -user jacky -name 'j*' –print
會從 /doc 目錄開始往下找,找jacky 的、文件名開頭是 j的文件。
find /doc /( -name 'ja*' -o- -name 'ma*' /) –print
會從 /doc 目錄開始往下找,找尋文件名是 ja 開頭或者 ma開頭的文件。
find /doc -name '*bak' -exec rm {} /;
會從 /doc 目錄開始往下找,找到凡是文件名結(jié)尾為 bak的文件,把它刪除掉。-exec 選項(xiàng)是執(zhí)行的意思,rm 是刪除命令,{ } 表示文件名,“/;”是規(guī)定的命令結(jié)尾。
locate 文件名
尋找文件工具
locate 也是一個尋找文件的工具,但是它不像 whereis 只能找程序文件等幾種文件,也不像find那么復(fù)雜,可以算是“中庸之道”!
中庸之道,往往就是大部分人最佳的選擇,如圖2-32所示。
?圖2-32 3種尋找文件命令的對比
whereis找不到的文件,find要一大串命令,還花了很久的時間才找到的XF86Config設(shè)置文件,而用locate一下子就簡單找到了!
grep [-選項(xiàng)] [字串] [文件名]
尋找某字串內(nèi)容工具
有些時候,我們存儲文件時隨手亂取了一個文件名,事后自己都忘了那個文件名叫什么,連開頭第一個字母都想不起來。那么,如果您還記得該文件一點(diǎn)特殊的詞語,應(yīng)該可以用 grep 命令找到。
例如,我們想在一個目錄的200個文件里面,找出哪一個文件提到“排版”這個詞語:
grep 排版 *.txt
找到了兩個文件有此字樣。然后您再自行調(diào)出看看到底哪一篇才是您所要的即可。尋找時注意盡量尋找特殊詞語,如果您輸入“然后”、“這樣”、“不是”、“電腦”……這類太普遍的詞語,可能幾百篇文章中都有,那就失去了用 grep 找文件的意義了。
因?yàn)槔又械诙恼鲁霈F(xiàn)了兩次,所以列出了3行,其實(shí)只有兩個文件符合。如果您想要讓它凡是符合條件的只出現(xiàn)一次的話,加上 -l 選項(xiàng)就可以了,如圖2-33所示。
?圖2-33 增加-l選項(xiàng)后的grep命令
其他常用的選項(xiàng)還有:
-n 同時列出該詞語出現(xiàn)在文章的第幾行。
-c 計(jì)算一下該字串出現(xiàn)的次數(shù)。
-i 比對的時候,不計(jì)較大小寫的不同
env
查看環(huán)境設(shè)置
env 命令可以設(shè)置很多環(huán)境變量,例如終端機(jī)的類型、使用的瀏覽器、用戶主目錄(Home Directory)的所在等等。
但是我們現(xiàn)在把焦點(diǎn)集中在其中一項(xiàng):PATH環(huán)境變量。
因?yàn)?PATH 這個環(huán)境變量掌管了您下達(dá)命令的時候,它會到下面幾個目錄去找您命令的程序:
/usr/bin
/sbin
/usr/sbin
/usr/X11R6/bin
/root/bin
那么您用 env 命令,讓它把所有的環(huán)境變量列出來的時候,就可以看到有一行PATH 設(shè)置,把上述幾個目錄用分號分開,然后串成一串。這就是它所謂尋找命令的“路徑”。DOS 系統(tǒng)也有一個同名而且意義非常相似的路徑設(shè)置。如圖2-34所示。
圖2-34 執(zhí)行env命令
如果您想在它查找命令的路徑上增加一個 /usr/bin/he,而把 /root/bin 去掉,那么您可以重新下達(dá):
env PATH=/usr/bin;/sbin;/usr/sbin;/usr/X11R6/bin;/usr/bin/he
當(dāng)然env 其他的變量也可以這樣改變。但是因?yàn)樯婕懊嫣珡V,我們就只把焦點(diǎn)集中在改變查找路徑上,其他暫時不談。
?
二.linux文本搜索命令
文本的提取和排序
下面介紹幾個重要的文本提取工具。
使用grep匹配模式
本章前面簡要地介紹了grep命令,用它進(jìn)行一個串中某些模式的匹配,采用正規(guī)表達(dá)式。(關(guān)于正規(guī)表達(dá)式的詳細(xì)介紹,請參閱http://www.regular-expressions.info/tutorial.html處的教程。)詞grep是global regular expression print(全局正規(guī)表達(dá)式打印)的首字母縮寫,它是從下面的vi命令衍生出來的,下面的命令打印與正規(guī)表達(dá)式re相匹配的所有行。
可將正規(guī)表達(dá)式 想象為用來定位文件中文本的搜索標(biāo)準(zhǔn)。因此,grep類似于別的操作系統(tǒng)中的搜索命令。grep搜索文件(或多個文件)的每一行,尋找給定串的第一次出 現(xiàn),如果找到這個串,打印出相應(yīng)的行。例如,輸出文件test.txt中包含表達(dá)式oracle database的所有行,可以按如下的方式使用grep命令:
為了輸出test.txt文件中不包含表達(dá)式oracle database的所有行,可使用帶-v選項(xiàng)的grep命令,如下所示:
除-v選項(xiàng)外,grep命令還可以使用如下的幾個選項(xiàng)。
q -c:打印每個輸入文件匹配行計(jì)數(shù)。
q -l:打印每個輸入文件的名字。
q -n:提供每個輸出行的行號。
q -i:忽略表達(dá)式中字母的大小寫。
除grep外,還可以使用fgrep(固定grep)搜索文件。fgrep命令不使用正規(guī)表達(dá)式。此命令直接進(jìn)行串比較,查找某個固定串而不是一個正規(guī)表達(dá)式的匹配。
grep的egrep版本幫助處理復(fù)雜的正規(guī)表達(dá)式,比正規(guī)的grep命令快。
剪切、粘貼和聯(lián)結(jié)文本
通常,需要剪切一個文件文本的某部分,或者聯(lián)結(jié)來自不止一個文件的文本。UNIX提供了執(zhí)行這些任務(wù)的命令,以下各節(jié)對它們進(jìn)行介紹。
1.用cut命令輸出列
cut命令輸出一個文本文件的指定的列。假如有一個名為example.txt的文件,它具有如下的文本:
可用-f選項(xiàng)指定要提取的字段。下面的命令將返回example.txt文件中的第二列:
使用帶-c選項(xiàng)的cut命令來指定希望從一個文件中提取的特定字符。下面的兩個命令分別提取password.txt文件中的第10個字符以及第10-12個字符:
可與-f選項(xiàng)一 起使用-d選項(xiàng)提取直到一個特定定界符的所有字符。下面的例子說明,cut命令提取passwd文件的第一個字段(f1),用-d選項(xiàng)指出該字段是由冒號 (:)定界的。(passwd文件位于/etc目錄,此目錄保存UNIX和Linux系統(tǒng)用戶賬號信息。)
2.用paste命令聯(lián)結(jié)文件
paste命令從一個源取一行并把它與來自另一源的另一行組合起來。假如有兩個文件:test1.txt包含字符串one two three,test2.txt包含one four five six。可如下用paste命令將兩個文件結(jié)合:
3.用join命令聯(lián)結(jié)文件
join命令也結(jié)合兩個文件的內(nèi)容,但它只在兩個文件有一個共同字段時進(jìn)行結(jié)合。前一節(jié)中,test1.txt和test2.txt不具有共同的列,因此對這兩個文件使用join命令不起作用。但如果有兩個文件test.one和test.two,它們的內(nèi)容如下:
默認(rèn)情況下,join命令只匹配第一個字段,所以它將根據(jù)共同的(第一列)給出如下的結(jié)果:
-1選項(xiàng)允許指出使用哪個字段作為第一個文件中的匹配字段。-2選項(xiàng)允許指定使用哪個字段作為第二個文件中的匹配字段。例如,如果第一個文件的第二個字段匹配第二個文件的第三個字段,可使用如下的join命令:
可使用-o選項(xiàng)以后面的格式指定輸出字段:file.filed。因此,要打印匹配行的第一個文件的第二個字段和第二個文件的第三個字段,可使用如下帶選項(xiàng)的join命令:
4.用sort命令排序文本
可用sort命令對文本文件的行進(jìn)行排序,不管這些行是來自于管道或來自于文件。如果使用-m選項(xiàng),sort只合并文件而不排序。假如有一個名為test.txt的文件,其內(nèi)容如下:
可用sort命令將test.txt文件的內(nèi)容按字母順序輸出:
默認(rèn)時,sort在文本的第一列上進(jìn)行排序。
5.用uniq命令刪除重復(fù)的行
uniq命令刪除文件的重復(fù)行。在一個管道中,此命令通常后跟一個sort命令。使用-c選項(xiàng),可將其用來對某行進(jìn)行計(jì)數(shù),或者使用-d選項(xiàng),可用來只報(bào)告重復(fù)的行。
上面的例子中,sort命令使用-m選項(xiàng)合并兩個文件,test.one和test.two。輸出管道到帶-c選項(xiàng)的uniq命令。所得出的是一個按字母順序排列的表,所有重復(fù)行被刪除。而且還給出每行重復(fù)的頻率。
?
三.Linux查找文件內(nèi)容的常用命令方法
從文件內(nèi)容查找匹配指定字符串的行:?$ grep "被查找的字符串" 文件名
從文件內(nèi)容查找與正則表達(dá)式匹配的行:?$ grep –e “正則表達(dá)式” 文件名
查找時不區(qū)分大小寫:?$ grep –i "被查找的字符串" 文件名
查找匹配的行數(shù):?$ grep -c "被查找的字符串" 文件名
從文件內(nèi)容查找不匹配指定字符串的行:??$ grep –v "被查找的字符串" 文件名
從根目錄開始查找所有擴(kuò)展名為.log的文本文件,并找出包含”ERROR”的行?find / -type f -name "*.log" | xargs grep "ERROR"
如果需要查找的內(nèi)容包含特殊符號,比如$等等,grep要加參數(shù)?find ./ -name "*.php" | xargs grep -F '要查找的內(nèi)容' ?
?
四.定位一個程序文件
Which命令在linux系統(tǒng)中用來定位一個程序文件,包含別名和路徑的工具。
使用權(quán)限
所有用戶
語法格式
which [ 程序名稱 ]?
使用說明
which 命令取得程序名列表并尋找當(dāng)這些文件名作為命令給定時所運(yùn)行的文件。which 命令展開每個參數(shù)(如果它有別名),并沿著用戶的路徑搜索它。別名和路徑從用戶主目錄中的 .cshrc 文件取得。如果 .cshrc 文件不存在,或者如果路徑?jīng)]有在 .cshrc 文件中定義,則 which 命令使用在用戶環(huán)境中定義的路徑。如果名稱的別名多于一個單字或如果在路徑里沒有找到一個有參數(shù)名稱的可執(zhí)行文件,那么將會給出診斷信息。
使用實(shí)例
要查找與 lookup 命令名有關(guān)的可執(zhí)行文件:which lookup
總結(jié)
以上是生活随笔為你收集整理的Linux下查找命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 倘若的倘是什么意思 倘若意思介绍
- 下一篇: Windows 通过 SecureCRT