五個查找命令:grep、find、locate、whereis、which

1、grep

grep(General Regular Expression Parser,通用規則表達式分析程序)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。

它的使用語法爲:

grep [選項] pattern [文件名]

. 匹配任意一個字符
* 匹配0 個或多個*前的字符
^ 匹配行開頭
$ 匹配行結尾
[] 匹配[ ]中的任意一個字符,[]中可用 - 表示範圍,
例如[a-z]表示字母a 至z 中的任意一個
\ 轉意字符
命令中的選項爲:
-b 顯示塊號
-c 僅顯示各指定文件中包含模式的總行數
-i 模式中字母不區分大小
-h 不將包含模式的文件名顯示在該行上
-l 僅顯示包含模式的文件名
-n 顯示模式所在行的行號
-s 指定文件若不存在或不可讀,不提示錯誤信息
-v 顯示所有不包含模式的行

其中,pattern爲所要匹配的字符串。如在/etc/passwd文件下查找包含“carey”字符的行:

grep carey /etc/passwd

要用好grep這個工具,其實就是要寫好正則表達式,所以這裏不對grep的所有功能進行實例講解,只列幾個例子,講解一個正則表達式的寫法。

grep 'test' d*

顯示所有以d開頭的文件中包含test的行。

ls -l | grep '^public'

通過管道過濾ls -l輸出的內容,只顯示以public開頭的行。

後面的^字符強制grep命令只在每行的開頭找public。整個搜索模式(pattern)用單引號括起來,使shell不理會它們。shell只將單引號去掉,將搜索模式送給grep命令。

grep -i 'hello world' menu.h main.c

顯示在menu.h和main.c文件中匹配“hello world”的行,忽略大小寫。

例如:

grep 'sample' -R * 

2、find

find是最常見和最強大的查找命令,你可以用它找到任何你想找的文件。

find的使用格式如下:

  find <指定目錄> <指定條件> <指定動作>

  - <指定目錄>: 所要搜索的目錄及其所有子目錄。默認爲當前目錄。

  - <指定條件>: 所要搜索的文件的特徵。

  - <指定動作>: 對搜索結果進行特定的處理。

如果什麼參數也不加,find默認搜索當前目錄及其子目錄,並且不過濾任何結果(也就是返回所有文件),將它們全都顯示在屏幕上。

find的使用實例:

find . -name 'my*' –ls

搜索當前目錄(含子目錄,下同)中所有文件名以my開頭的文件,並顯示它們的詳細信息。

find /home -user rtos     

搜索/home下擁有者爲rtos的文件

find . -type f -mmin -10

搜索當前目錄中,在過去10分鐘中更新過的所有的普通文件。如果不加-type f參數,則搜索普通文件+特殊文件+目錄。

find / -type f -size +100M

查找系統中所有大於100M的文件

說明: 如果你要尋找一個檔案的話,那麼使用 find 會是一個不錯的主意。不過,由於 find 在尋找數據的時候相當的耗硬盤,所以沒事情不要使用 find 啦!有更棒的指令可以取代呦,那就是 whereis 與 locate 咯~

3、locate

locate命令其實是“find -name”的另一種寫法,但是要比後者快得多,原因在於它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。爲了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。

locate命令的使用實例:

locate /etc/sh

搜索etc目錄下所有以sh開頭的文件。

locate -i ~/m

搜索用戶主目錄下,所有以m開頭的文件,並且忽略大小寫。

4、whereis

whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。

whereis命令的使用實例:

whereis grep

grep: /bin/grep /usr/share/man/man1p/grep.1p.gz /usr/share/man/man1/grep.1.gz

5、which

which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。

which命令的使用實例:

which grep

/bin/grep

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章