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