Linux 基礎(chǔ)教程 23-基本命令find和grep

find

??find命令主要用來(lái)在指定的路徑下查找指定的文件。

基礎(chǔ)語(yǔ)法

find [路徑] [參數(shù)] [操作]

詳細(xì)的參數(shù)說(shuō)明如下所示:

  • 路徑:find命令查找的目錄路徑,如 . 表示當(dāng)前目錄,/ 表示系統(tǒng)根目錄
  • 參數(shù):指定上的查找條件,如:可以按照文件更改時(shí)間、文件類(lèi)型等條件查找
  • 操作:用于指定結(jié)果的輸出方式

find命令常用參數(shù)及其含義如下:

參數(shù) 含義
-name 按文件名查找文件
-perm 按文件權(quán)限查找文件
-depth 查找文件時(shí),首先查找當(dāng)前目錄中的文件,然后在其子目錄中查找
-prune 使用該參數(shù)進(jìn),可以使find命令不在當(dāng)前指定的目錄中查找,如果同時(shí)使用-depth參數(shù),則-prune將被find命令忽略
-user 根據(jù)文件屬主查找文件
-group 根據(jù)文件所屬的用戶組查找
-mtime -n +n 根據(jù)文件的更改時(shí)間查找文件,-n 表示文件更改時(shí)間距離現(xiàn)在在n天以內(nèi),+n表示文件更改時(shí)間距離現(xiàn)在在n天之前
-nogroup 查找無(wú)有效屬組的文件,即該文件所屬的組在/etc/groups中不存在
-nouser 查找無(wú)有效屬主的文件,即該文件的屬主在/ect/passwd中不存在
-newer file1 ! file2 查找更改時(shí)間比文件file1新但比f(wàn)ile2舊的文件
-type 查找某一類(lèi)型的文件,type后的子參數(shù)及其意義如下:
b:塊設(shè)備文件
d:目錄
c:字符設(shè)備文件
p:管道文件
l:符號(hào)鏈接文件
f:普通文件
-size n:[c] 查找文件長(zhǎng)度為n塊的文件,帶有c時(shí)表示文件長(zhǎng)度以字節(jié)計(jì)

find命令操作名稱及其意義如下所示:

操作名稱 含義
-print 將匹配的文件輸出到標(biāo)準(zhǔn)輸出
-exec 對(duì)匹配的文件執(zhí)行該參數(shù)所給出的Shell命令。相應(yīng)命令的形式為'command' { } ;。注意{ }和;之間的空格
-ok 和-exec作用相同,只不過(guò)以一種更安全的模式來(lái)執(zhí)行該參數(shù)所給出的Shell命令,在執(zhí)行每一個(gè)命令之前,都給出提示,讓用戶來(lái)確定是否執(zhí)行

示例

  • 1、根據(jù)文件名進(jìn)行查找文件,并將匹配到文件輸出到標(biāo)準(zhǔn)輸出


    23-1 find-name示例_c2i.jpg
  • 2、查找更改時(shí)間在距今3天以內(nèi)的文件和距今3天之前的文件


    23-2 find-mtime示例_c2i.jpg
  • 3、查找對(duì)應(yīng)的文件,并顯示每個(gè)文件對(duì)應(yīng)的行數(shù)


    23-3 find-exec示例_c2i.jpg
  • 4、查找對(duì)應(yīng)的文件,在執(zhí)行刪除文件逐個(gè)進(jìn)行確認(rèn)


    23-4 find-ok示例_c2i.jpg

grep

??grep是(Global search Regular Expression and Print out the line)的簡(jiǎn)稱,即全面搜索正則表達(dá)式并打印行,該命令是Linux中的一種非常強(qiáng)大的文本搜索工具,它可以根據(jù)指定的字符串,對(duì)文件的每一行進(jìn)行搜索,如果找到該字符串,則輸出該行的內(nèi)容。

基礎(chǔ)語(yǔ)法

grep [參數(shù)] 需要查找的字符串 文件名

主要參數(shù)如下所示:

參數(shù) 功能
-A NUM 除了顯示符合條件的行外,同時(shí)顯示每個(gè)符合條件行的后NUM行
-B NUM 除了顯示符合條件的行外,同時(shí)顯示每個(gè)符合條件行的前NUM行,與-A相反
-c 只顯示符合條件的行數(shù),而不顯示每行的具體信息
-i 搜索時(shí)忽略大小寫(xiě)
-h 搜索多個(gè)文件時(shí)不顯示文件名
-l 只顯示符合匹配的文件名,而不顯示具體的匹配行
-n 顯示所有匹配的行,并顯示行號(hào)
-s 不顯示不存在或無(wú)匹配文本的錯(cuò)誤信息
-v 顯示不包含匹配文本的所有行
-w 匹配整詞
-x 匹配整行
-r 遞歸搜索,不僅搜索當(dāng)前目錄,也搜索子目錄
-q 不輸出任何結(jié)果,以退出狀態(tài)表示搜索是否成功
-b 打印匹配行距離文件頭部的偏移量,以字節(jié)為單位
-o 與-b結(jié)合使用,打印匹配的詞距離文件頭部的偏移量,以字節(jié)為單位
-E 支持?jǐn)U展的正則表達(dá)式

grep命令中的需要查找的字符串十分靈活,可以是字符串,也可以是變量,還可以是正則表達(dá)式。需要注意的是,無(wú)論是體積形式,只要包含空格,就需要使用雙引號(hào)將其引起來(lái),如果不加雙引號(hào),空格后的字符串會(huì)被認(rèn)為為是文件名。

常規(guī)示例

  • 1、搜索的字符串包含空格時(shí),是否使用雙引號(hào)的區(qū)別


    23-5 grep示例-1_c2i.jpg

從上面可以看出,如果搜索的字符串包含空格時(shí),會(huì)產(chǎn)生錯(cuò)誤,在Linux中默認(rèn)參數(shù)時(shí)以空格做為分隔

  • 2、多文件查詢


    23-6 grep示例-2_c2i.jpg
  • 3、使用通配符查詢


    23-7 grep示例-2_c2i.jpg
  • 4、-c參數(shù)詳解
    ??-c參數(shù)表示輸出匹配字符串行的數(shù)量,默認(rèn)情況下,grep命令打印包含搜索字符串的所有行,而加上-c參數(shù)后,就只顯示包含搜索字符串行的數(shù)量,如下所示:


    23-8 grep-c參數(shù)_c2i.jpg
  • 5、-n參數(shù)詳解
    ??-n參數(shù)顯示所有匹配的行,并顯示行號(hào)。默認(rèn)情況下,grep搜索單個(gè)文件時(shí),只顯示每行的內(nèi)容,搜索多個(gè)文件時(shí),顯示文件名及每行的內(nèi)容,如果加-n參數(shù)后,將在匹配的行前面顯示行號(hào),如下所示:


    23-9 grep-n參數(shù)_c2i.jpg
  • 6、-v參數(shù)詳解
    ??-v參數(shù)顯示不包括匹配文本的所有行,即將搜索到的匹配行排除在外。


    23-10 grep-v參數(shù)_c2i.jpg
  • 7、-i參數(shù)詳解
    ??在Linux系統(tǒng)中,對(duì)大小寫(xiě)是敏感的,而grep也不例外。參數(shù)-i則表示在搜索時(shí)忽略大小寫(xiě),如下所示:


    23-11 grep-i參數(shù)_c2i.jpg
  • 8、-h參數(shù)詳解
    ??-h參數(shù)表示搜索多文件時(shí)不顯示文件名。而在默認(rèn)情況下,grep命令查詢多個(gè)文件時(shí),會(huì)在匹配行的前面顯示文件名,而-h參數(shù)的主要作用就是不在顯示文件名,如下所示:


    23-12 grep-h參數(shù)_c2i.jpg
  • 9、-l參數(shù)詳解
    ??-l表示只顯示搜索到的匹配項(xiàng)的文件名,而不顯示具體的匹配行,如下所示:


    23-13 grep-l參數(shù)_c2i.jpg
  • 10、-s參數(shù)詳解
    ??-s參數(shù)表示不顯示不存在或無(wú)法匹配到的文本錯(cuò)誤信息。在默認(rèn)情況下,當(dāng)grep在搜索中出現(xiàn)不存在或無(wú)法匹配時(shí)將打印錯(cuò)誤信息,如下所示:


    23-14 grep-s參數(shù)_c2i.jpg
  • 11、-r參數(shù)詳解
    ??默認(rèn)情況下,grep命令只搜索當(dāng)前目錄下的文件,而不對(duì)子目錄的文件進(jìn)行搜索。使用-r參數(shù)后,則搜索當(dāng)前目錄和子目錄,如下所示:


    23-15 grep-r參數(shù)_c2i.jpg
  • 12、-w和-x參數(shù)
    ??grep命令是支持正則表達(dá)式的。正則表達(dá)式中的元字符會(huì)被解釋為特殊的含義。-w表示匹配整個(gè)搜索字符串,即以字面的含義去解析它。-x則是匹配整行,即只有文件中有整行內(nèi)容和搜索字符串匹配,才會(huì)顯示出來(lái)。詳細(xì)示例如下:

    23-16 grep-w-x參數(shù)_c2i.jpg

  • 13、-q參數(shù)詳解
    ??從上面可知,grep命令默認(rèn)情況下是輸出結(jié)果的。如果只是想知道有沒(méi)有匹配成功,則使用-q參數(shù)即可。

退出狀態(tài) 詳細(xì)含義
0 匹配成功
1 未搜索到匹配的文本行
2 命令或程序存在錯(cuò)誤而未執(zhí)行
23-17 grep-q參數(shù)示例_c2i.jpg

echo $? 用于顯示上一條命令退出狀態(tài)

正則表達(dá)式示例

  • 1、匹配行首


    23-18 正則表達(dá)式行首_c2i.jpg
  • 2、設(shè)置大小寫(xiě)


    23-19 正則表達(dá)式大小寫(xiě)_c2i.jpg
  • 3、匹配重復(fù)字符


    23-20 正則表達(dá)式重復(fù)項(xiàng)_c2i.jpg
  • 4、匹配轉(zhuǎn)義符


    23-21 正則表達(dá)式轉(zhuǎn)義符_c2i.jpg
  • 5、POSIX字符類(lèi)


    23-22 grep-POSIX字符類(lèi)_c2i.jpg
  • 6、精確匹配


    23-23 正則表達(dá)式精確匹配_c2i.jpg
  • 7、或字符"|"是擴(kuò)展的正則表達(dá)式中定義的,因此grep在使用時(shí)需要加上-E選項(xiàng)才能支持,示例如下所示:


    23-24 正則表達(dá)式或字符_c2i.jpg

??grep和正則表達(dá)式結(jié)合起來(lái),加以靈活使用,功能十分強(qiáng)大,大家可根據(jù)實(shí)際情況多使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://blog.sina.com.cn/s/blog_47d5f1b801015ea7.html首先要記住...
    水平閱讀 1,281評(píng)論 0 2
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 100,605評(píng)論 9 468
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,200評(píng)論 2 33
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • 什么也不想寫(xiě)。因?yàn)檫M(jìn)入減肥綜合癥狀態(tài):想發(fā)火、想吃、不想做任何事。 然而我剛開(kāi)始減肥才十天! 呃呃呃! 所以到三月...
    寒晗Tylor閱讀 385評(píng)論 0 0

友情鏈接更多精彩內(nèi)容