1. 程式人生 > 其它 >find,正則,gerp

find,正則,gerp

1.find

查詢'檔案'
根據檔案的名稱或者屬性查詢檔案
man find

語法格式:
	find [查詢範文] [引數]

引數:
	-name		:按照檔案的名字查詢檔案
		find / -name '檔名稱'
	*		:萬用字元
	-iname		:按照檔案的名字查詢(忽略大小寫)
	-size		:按照檔案的大小查詢
		+		:大於指定檔案大小
		-		:小於指定檔案大小
		沒有符號	:等於
	-mtiame		:按照修改時間查詢
		+n		:n天以前
		-n		:n天以後
	-ctime		:同上
	-atime		:同上
	-user		:按照使用者的屬主查詢
	-group		:按照使用者的屬組查詢
	-type		:按照檔案型別查詢
	-inum		:依據檔案的index node號查詢
	-perm		:按照檔案額許可權查詢(數字許可權)
	
	-a		:並且(連結多個引數。預設)
	-o		:或者
	-maxdepth	:查詢的目錄深度(必須放置第一引數位)
	-exec		:將前面find處理好的結果交給其他命令執行

知識儲備:
	dd	:生成指定大小檔案
		dd if=/dev/zero of=100.txt bs-10M count-10
			if	:從什麼地方讀檔案
			of	:寫入到什麼檔案
			bs	:每次寫入多少大小
			count	:寫入多少次
案例:
	案例1:
	查詢/etc目錄下hosts檔案
	find [/etc/] -name 'hosts'

	案例2:
	查詢/etc目錄下名稱中包含hosts檔案
	find /etc/ -name '*hosts*'
	'*hosts'

	案例3:要求把/etc目錄下,所有的普通檔案打包壓縮到/tmp目錄
	tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

知識儲備:
	|:前面一個命令的結果交給後面的一個命令處理
	
	xargs:把處理的文字變成以空格分割的一行
	``:提前執行命令,然後將結果交給其他命令來處理

grep命令

三劍客之一:grep(文字過濾器)
	根據文字內容過濾檔案

語法格式:
	grep [引數] [匹配規則] [操作物件]

引數:
	-n		:過濾文字時,將過濾出來的內容在檔案內的行號顯示出來
	-A		:匹配成之後將匹配行後n行顯示出來
		grep -n -A ‘規則’ 操作物件
	-B		:前n行,同上取反
	-C		:前後n行,同上
	-c		:只顯示匹配
	-o		:只顯示匹配成功的內容
	-v		:反向過濾(列印內容是非匹配物件)
	-q		:靜默輸出
	-i		:忽略大小寫
	-l		:匹配成功之後將文字的名稱打印出來,不成功不列印
	-R|-r		:遞迴匹配
	-E		:使用擴充套件正則等價於egrep

知識儲備:
	echo $?	:命令列中上一行命令執行的結果
		0	:代表執行成功
		其他	:執行失敗
		
	wc	:匹配行數
		-l	:列印匹配行數
		-c	:列印匹配的位元組數

正則

1.正則表示式分類:
	1.普通正則匹配
	2.擴充套件正則匹配

2.普通正則匹配:
	^		:以某字元開頭
	$		:已某字元結尾
	.		:匹配除換行符意外的任意單個字元
	*		:匹配前導字元的任意個數
	[]		:某組字串內的任意字元
	[^]		:取反
	[a-z]		:匹配小寫字母
	[A-Z]		:匹配大寫字母
	[a-zA-Z]	:匹配字母
	[0-9]		:匹配數字
	\		:取消轉義
	()		:分組 
		\n		:代表第n個分組
3.擴充套件正則表示式:
	{}		:匹配的次數
		{n}		:匹配n次
		{n,}		:匹配最少n次
		{n,m}		:匹配n-m次
		{,m}		:最多匹配m次
	+		:匹配至少一個前導字元
	?		:匹配一個或零個前導字元
	|		:或

案例:
	案例1:在/etc/passwd檔案中,匹配以ftp開頭的行
		grep '^ftp'  /etc/passwd

	案例2:在/etc/passwd檔案中,匹配以bash結尾的行
		grep 'bash$'  /etc/passwd

	案例x:匹配
		grep 'f*'  test.txt 0和多個都匹配出來

	案例3:匹配本機中有哪些ip
		ip a | egrep -o '[0-9]{1,3}/.{3}[0-9]{1,3}'
	
	案例4:將/etc/fstab中去掉包含#開頭的行,且要求# 後至少有一個空格
		egrep '^#\ +'  /etc/fstab

	案例5:找出檔案中至少有一個空格的行
		egrep '\ +'
		
	案例6:將nginx.conf檔案中以#開頭的行和空行全部排除
		egrep -v '^\ *#|^$'  /etc/nginx/nginx.conf