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命令操作名稱(chēng)及其意義如下所示:
操作名稱(chēng) | 含義 |
---|---|
將匹配的文件輸出到標(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)稱(chēng)砰盐,即全面搜索正則表達(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í)行 |
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í)際情況多使用值戳。