Linux下的五個查詢命令

2021-07-11 03:19:52 字數 3568 閱讀 1505

1、grep

grep(general regular expressionparser,通用規則表示式分析程式)是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。

它的使用語法為:

grep [選項] pattern [檔名]

. 匹配任意乙個字元

* 匹配0 個或多個*前的字元

^ 匹配行開頭

$ 匹配行結尾

匹配[ ]中的任意乙個字元,中可用 - 表示範圍,

例如[a-z]表示字母a 至z 中的任意乙個

\ 轉意字元

參  數:

-a或--text 不要忽略二進位制的資料。

-a《顯示列數》或--after-context=《顯示列數》除了顯示符合範本樣式的那一列之外,並顯示該列之後的內容。

-b或--byte-offset 在顯示符合範本樣式的那一列之前,標示出該列第乙個字元的位編號。

-b《顯示列數》或--before-context=《顯示列數》除了顯示符合範本樣式的那一列之外,並顯示該列之前的內容。

-c或--count 計算符合範本樣式的列數。

-c《顯示列數》或--context=《顯示列數》或-《顯示列數》除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。

-d《進行動作》或--directories=《進行動作》當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep指令將回報資訊並停止動作。

-e《範本樣式》或--regexp=《範本樣式》指定字串做為查詢檔案內容的範本樣式。

-e或--extended-regexp 將範本樣式為延伸的普通表示法來使用。

-f《範本檔案》或--file=《範本檔案》指定範本檔案,其內容含有乙個或多個範本樣式,讓grep查詢符合範本條件的檔案內容,格式為每列乙個範本樣式。

-f或--fixed-regexp 將範本樣式視為固定字串的列表。

-g或--basic-regexp 將範本樣式視為普通的表示法來使用。

-h或--no-filename 在顯示符合範本樣式的那一列之前,不標示該列所屬的檔名稱。

-h或--with-filename 在顯示符合範本樣式的那一列之前,表示該列所屬的檔名稱。

-i或--ignore-case 忽略字元大小寫的差別。

-l或--file-with-matches 列出檔案內容符合指定的範本樣式的檔名稱。

-l或--files-without-match 列出檔案內容不符合指定的範本樣式的檔名稱。

-n或--line-number 在顯示符合範本樣式的那一列之前,標示出該列的列數編號。

-q或--quiet或--silent 不顯示任何資訊。

-r或--recursive 此引數的效果和指定「-d recurse」引數相同。

-s或--no-messages 不顯示錯誤資訊。

-v或--revert-match 反轉查詢。

-v或--version 顯示版本資訊。

-w或--word-regexp 只顯示全字符合的列。

-x或--line-regexp 只顯示全列符合的列。

-y 此引數的效果和指定「-i」引數相同。

其中,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檔案中匹配「helloworld」的行,忽略大小寫。

例如: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分鐘中更新過的所有的普通檔案。如果不加-typef引數,則搜尋普通檔案+特殊檔案+目錄。

$ 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

linux下常用的五個查詢命令

1 grep grep general regular expression parser,通用規則表示式分析程式 是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。它的使用語法為 grep 選項 pattern 檔名 匹配任意乙個字元 匹配0 個或多個 前的字元 匹配行開...

檔案目錄類命令 Linux的五個查詢命令

檔案目錄類命令 linux的五個查詢命令 大多數程式設計師,可能經常使用其中的2到3條,對這5條命令都很熟悉的人應該是不多的。1.find find是最常見和最強大的查詢命令,你可以用它找到任何你想找的檔案。find的使用格式如下 find 指定目錄 指定條件 指定動作 指定目錄 所要搜尋的目錄及其...

linux下的查詢命令

whereis 程式名稱 查詢軟體的安裝路徑 b 只查詢二進位制檔案 m 只查詢幫助檔案 s 只查詢源 u 排除指定型別檔案 f 只顯示檔名 b 目錄 在指定目錄下查詢二進位制檔案 m 目錄 在指定目錄下查詢幫助檔案 s 目錄 在指定目錄下查詢源 locate 檔名稱 在檔案索引資料庫中搜尋檔案 d...