Linux下查找命令(收集整理)


原文:http://blog.csdn.net/sunstars2009918/article/details/8510878

 

一.Linux查找文件的相關命令

常 用 命 令 簡要中文說明 程序所在目錄
more
分頁顯示一個文件或任何輸出結果
/bin
less
分頁顯示一個文件並且可以回頭
/usr/bin
whereis
尋找文件工具
/usr/bin
find
尋找文件工具
/usr/bin
locate
尋找文件工具
/usr/bin
grep
尋找某字串內容工具
/bin
env
查看環境設置
/usr/bin

  more [文件名]

  分頁顯示一個文件或任何輸出結果

  其實more不是用來尋找文件的,但是一般人卻十有八九是在找文件時把它派上用場。

  因為 more 主要的作用是把輸出結果顯示在屏幕上,一頁停止一次,所以例如當我們用 ls 命令去找一個 x字母開頭的文件,而下達了 ls x* 卻仍然列出太多文件,一個屏幕看不完時,就可以配合管道符號和 more 命令:

  ls x* | more

  它會一屏停止一下,等待您按空白鍵才繼續往上卷。於是 more 儼然猶如 DOS 的 DIR 命令 /P 選項的地位了。而 more 當主角的時候,是用做一頁一次顯示文章,例如我們想要看 /etc 里面的 XF86Config 文件,可以下如下命令:

  more /etc/XF86Config

  這樣,我們就可以不斷按空白鍵把這個文件慢慢看完。但是,因為more 先天的設計,如果您看完了這頁,想要回頭看上一頁,很抱歉,是不行的,您必須從頭再來!於是大家在使用中就干脆摒棄這個命令,而代之以 vi 或者pico, joe等文書編輯器來看文字文件了!

  less [文件名]

  分頁顯示一個文件並且可以回頭

  less命令很好笑,取名時就故意與more 命令打對台,你叫“更多”,我就叫“更少”,就好像你叫黑人牙膏我就叫白人牙膏一樣。事實上與什么“更多”、“更少”都沒有關系。它最主要只是為了改進一點:more 不能回頭看的問題!

  less 的優點就是可以隨時回頭,最簡單的用【PgUp】鍵就可以向上翻。

  可是依我們的孤陋之見,還是用文書編輯器去閱讀文件就好了嘛,更何況 less 本身還有高達 42 個選項,何必那么麻煩!

  所以,為了您好,選項我們也不介紹了。這個命令目前只在 Linux 系統可以使用,其他 UNIX 家族尚無。

  pico /etc/XF86Config

  到最后,很少人再用more了。所以more經常配合 ls在找文件的場合出現,每天都可以上場十幾次。

  所以,相信把失去主要舞台的 more歸類為找尋文件的相關命令雖不合法,但合情合理也合於現狀。

  whereis 文件名

  尋找文件工具

  whereis 是一個小巧好用的文件尋找工具,它專門用來尋找可執行的程序、原始程序和使用手冊。

  例如執行命令:

  whereis bzip2

  它就會告訴您,bzip2 放在 /usr/bin 。通常,如果您確定某個東西是程序,而用 whereis 找不到的話,那就表示本系統沒有安裝該程序了,例如:

  whereis cjoe

  表示這套系統中沒有裝 cjoe,否則應該會找到才對。

  find [尋找的目錄] [表示式]

  尋找文件工具

  find 是高級的尋找文件工具,可不像 whereis 那么“陽春白雪”。但也因為它太高級了,復雜到很多人用不熟練。我們盡量只舉簡單的例子。

  最簡單的格式如下:

  find / -name my* -print

  這個意思是請它從最底層的主目錄開始找,找出文件名是 my 開頭的文件,把它顯示出來。-print 選項是顯示,您可把它當做固定要加上的項目。

  但它還可以用時間來找,例如:

  find /usr -atime 3 –print

  會從 /usr 目錄開始往下找,找最近3天之內存取過的文件。

  find /usr -ctime 5 –print

  會從 /usr 目錄開始往下找,找最近5天之內修改過的文件。

  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 目錄開始往下找,找到凡是文件名結尾為 bak的文件,把它刪除掉。-exec 選項是執行的意思,rm 是刪除命令,{ } 表示文件名,“/;”是規定的命令結尾。

  locate 文件名

  尋找文件工具

  locate 也是一個尋找文件的工具,但是它不像 whereis 只能找程序文件等幾種文件,也不像find那么復雜,可以算是“中庸之道”!

  中庸之道,往往就是大部分人最佳的選擇,如圖2-32所示。

 

 圖2-32 3種尋找文件命令的對比

 

  whereis找不到的文件,find要一大串命令,還花了很久的時間才找到的XF86Config設置文件,而用locate一下子就簡單找到了!

 grep [-選項] [字串] [文件名]

  尋找某字串內容工具

  有些時候,我們存儲文件時隨手亂取了一個文件名,事后自己都忘了那個文件名叫什么,連開頭第一個字母都想不起來。那么,如果您還記得該文件一點特殊的詞語,應該可以用 grep 命令找到。

  例如,我們想在一個目錄的200個文件里面,找出哪一個文件提到“排版”這個詞語:

  grep 排版 *.txt

  找到了兩個文件有此字樣。然后您再自行調出看看到底哪一篇才是您所要的即可。尋找時注意盡量尋找特殊詞語,如果您輸入“然后”、“這樣”、“不是”、“電腦”……這類太普遍的詞語,可能幾百篇文章中都有,那就失去了用 grep 找文件的意義了。

  因為例子中第二篇文章出現了兩次,所以列出了3行,其實只有兩個文件符合。如果您想要讓它凡是符合條件的只出現一次的話,加上 -l 選項就可以了,如圖2-33所示。

 

 圖2-33 增加-l選項后的grep命令

 

  其他常用的選項還有:

  -n 同時列出該詞語出現在文章的第幾行。

  -c 計算一下該字串出現的次數。

  -i 比對的時候,不計較大小寫的不同

  env

  查看環境設置

  env 命令可以設置很多環境變量,例如終端機的類型、使用的瀏覽器、用戶主目錄(Home Directory)的所在等等。

  但是我們現在把焦點集中在其中一項:PATH環境變量。

  因為 PATH 這個環境變量掌管了您下達命令的時候,它會到下面幾個目錄去找您命令的程序:

  /usr/bin

  /sbin

  /usr/sbin

  /usr/X11R6/bin

  /root/bin

  那么您用 env 命令,讓它把所有的環境變量列出來的時候,就可以看到有一行PATH 設置,把上述幾個目錄用分號分開,然后串成一串。這就是它所謂尋找命令的“路徑”。DOS 系統也有一個同名而且意義非常相似的路徑設置。如圖2-34所示。

 

 圖2-34 執行env命令

 

  如果您想在它查找命令的路徑上增加一個 /usr/bin/he,而把 /root/bin 去掉,那么您可以重新下達:

  env PATH=/usr/bin;/sbin;/usr/sbin;/usr/X11R6/bin;/usr/bin/he

  當然env 其他的變量也可以這樣改變。但是因為涉及面太廣,我們就只把焦點集中在改變查找路徑上,其他暫時不談。

 

二.linux文本搜索命令

文本的提取和排序
下面介紹幾個重要的文本提取工具。
使用grep匹配模式
本章前面簡要地介紹了grep命令,用它進行一個串中某些模式的匹配,采用正規表達式。(關於正規表達式的詳細介紹,請參閱 http://www.regular-expressions.info/tutorial.html處的教程。)詞grep是global regular expression print(全局正規表達式打印)的首字母縮寫,它是從下面的vi命令衍生出來的,下面的命令打印與正規表達式re相匹配的所有行。
可將正規表達式 想象為用來定位文件中文本的搜索標准。因此,grep類似於別的操作系統中的搜索命令。grep搜索文件(或多個文件)的每一行,尋找給定串的第一次出 現,如果找到這個串,打印出相應的行。例如,輸出文件test.txt中包含表達式oracle database的所有行,可以按如下的方式使用grep命令:
為了輸出test.txt文件中不包含表達式oracle database的所有行,可使用帶-v選項的grep命令,如下所示:
除-v選項外,grep命令還可以使用如下的幾個選項。
q -c:打印每個輸入文件匹配行計數。
q -l:打印每個輸入文件的名字。
q -n:提供每個輸出行的行號。
q -i:忽略表達式中字母的大小寫。
除grep外,還可以使用fgrep(固定grep)搜索文件。fgrep命令不使用正規表達式。此命令直接進行串比較,查找某個固定串而不是一個正規表達式的匹配。
grep的egrep版本幫助處理復雜的正規表達式,比正規的grep命令快。
剪切、粘貼和聯結文本
通常,需要剪切一個文件文本的某部分,或者聯結來自不止一個文件的文本。UNIX提供了執行這些任務的命令,以下各節對它們進行介紹。
1.用cut命令輸出列
cut命令輸出一個文本文件的指定的列。假如有一個名為example.txt的文件,它具有如下的文本:
可用-f選項指定要提取的字段。下面的命令將返回example.txt文件中的第二列:
使用帶-c選項的cut命令來指定希望從一個文件中提取的特定字符。下面的兩個命令分別提取password.txt文件中的第10個字符以及第10-12個字符:
可與-f選項一 起使用-d選項提取直到一個特定定界符的所有字符。下面的例子說明,cut命令提取passwd文件的第一個字段(f1),用-d選項指出該字段是由冒號 (:)定界的。(passwd文件位於/etc目錄,此目錄保存UNIX和Linux系統用戶賬號信息。)
2.用paste命令聯結文件
paste命令從一個源取一行並把它與來自另一源的另一行組合起來。假如有兩個文件:test1.txt包含字符串one two three,test2.txt包含one four five six。可如下用paste命令將兩個文件結合:
3.用join命令聯結文件
join命令也結合兩個文件的內容,但它只在兩個文件有一個共同字段時進行結合。前一節中,test1.txt和test2.txt不具有共同的列,因此對這兩個文件使用join命令不起作用。但如果有兩個文件test.one和test.two,它們的內容如下:
默認情況下,join命令只匹配第一個字段,所以它將根據共同的(第一列)給出如下的結果:
-1選項允許指出使用哪個字段作為第一個文件中的匹配字段。-2選項允許指定使用哪個字段作為第二個文件中的匹配字段。例如,如果第一個文件的第二個字段匹配第二個文件的第三個字段,可使用如下的join命令:
可使用-o選項以后面的格式指定輸出字段:file.filed。因此,要打印匹配行的第一個文件的第二個字段和第二個文件的第三個字段,可使用如下帶選項的join命令:
4.用sort命令排序文本
可用sort命令對文本文件的行進行排序,不管這些行是來自於管道或來自於文件。如果使用-m選項,sort只合並文件而不排序。假如有一個名為test.txt的文件,其內容如下:
可用sort命令將test.txt文件的內容按字母順序輸出:
默認時,sort在文本的第一列上進行排序。
5.用uniq命令刪除重復的行
uniq命令刪除文件的重復行。在一個管道中,此命令通常后跟一個sort命令。使用-c選項,可將其用來對某行進行計數,或者使用-d選項,可用來只報告重復的行。
上面的例子中,sort命令使用-m選項合並兩個文件,test.one和test.two。輸出管道到帶-c選項的uniq命令。所得出的是一個按字母順序排列的表,所有重復行被刪除。而且還給出每行重復的頻率。
 
 

 

三.Linux查找文件內容的常用命令方法

從文件內容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名

從文件內容查找與正則表達式匹配的行: $ grep –e “正則表達式” 文件名

查找時不區分大小寫: $ grep –i "被查找的字符串" 文件名

查找匹配的行數: $ grep -c "被查找的字符串" 文件名

從文件內容查找不匹配指定字符串的行:  $ grep –v "被查找的字符串" 文件名

從根目錄開始查找所有擴展名為.log的文本文件,並找出包含”ERROR”的行 find / -type f -name "*.log" | xargs grep "ERROR"

如果需要查找的內容包含特殊符號,比如$等等,grep要加參數 find ./ -name "*.php" | xargs grep -F '要查找的內容'  

 

四.定位一個程序文件

Which命令在linux系統中用來定位一個程序文件,包含別名和路徑的工具。

使用權限

所有用戶

語法格式

which [ 程序名稱 ] 

使用說明

which 命令取得程序名列表並尋找當這些文件名作為命令給定時所運行的文件。which 命令展開每個參數(如果它有別名),並沿着用戶的路徑搜索它。別名和路徑從用戶主目錄中的 .cshrc 文件取得。如果 .cshrc 文件不存在,或者如果路徑沒有在 .cshrc 文件中定義,則 which 命令使用在用戶環境中定義的路徑。如果名稱的別名多於一個單字或如果在路徑里沒有找到一個有參數名稱的可執行文件,那么將會給出診斷信息。

使用實例

要查找與 lookup 命令名有關的可執行文件:which lookup


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM