shell 目錄下檢索字符串

查找目錄下的所有文件中是否含有某個字符串,并且只打印出文件名
find . -name "*.type" | xargs grep -ri "str"

一铅祸、find 指令
(1)查找具有某些特征文件的命令脉执,可遍歷當(dāng)前目錄甚至于整個文件系統(tǒng)來查看某些文件或目錄勇垛,其遍歷大的文件系統(tǒng)時一般放在后臺執(zhí)行矿筝。
(2)find命令的一般形式
find pathname -options [-print -exec -ok]
-pathname :find命令所查找的目錄路徑宝穗。如用"."來表示當(dāng)前的目錄,用/來表示系統(tǒng)根目錄
-print :find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出

-exec: find命令對匹配的文件執(zhí)行該參數(shù)所給出的shell命令桩引,相應(yīng)的命令形式為 'command'{} ; (注意{}和\之間的空格)
eg:
find . -name "*.png" -exce rm -rf {} ;

-ok 和 -exec的作用相同贩猎,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個命令之前途事,都會給出提示验懊,讓用戶來確定是否執(zhí)行擅羞。
options有如下幾種:
-name :按照文件名查找文件
-perm :按照文件權(quán)限來查找文件
-user :按照文件屬主來查找文件
-group :按照文件所屬的組來查找文件
-mtime -n +n 按照文件的更改時間來查找文件,
-n表示文件更改時間距現(xiàn)在n天以內(nèi)义图,
+n表示文件更改時間距現(xiàn)在n天以前减俏。
find命令還有-atime 和-ctime選項,但它們都和-mtime選項相似碱工。
-size n[c]查找文件長度為n塊的文件娃承,帶有c時表示文件長度以字節(jié)計。
-nogroup 查找無有效所屬組的文件怕篷,即該文件所屬的組在/etc/groups中不存在
-newer file1 !file2查找更改時間比文件file1新但比文件file2舊的文件
-depth 先查找指定目錄有無匹配文件历筝,若無則再在子目錄中查找
-type 查找某一類型的文件,如 b :塊設(shè)備文件 d:目錄 e:字符設(shè)備文件 p廊谓;管道文件 l:符號鏈接文件 f:普通文件
(3)find命令舉例
find -name "*.txt" -print 查找txt結(jié)尾的文件并輸出到屏幕上
find /cmd ".sh" -print 查找/cmd目錄下所有sh文件梳猪,并輸出
find . -perm 755 -print 查找當(dāng)前目錄下權(quán)限為755的文件,并輸出
find 'pwd' -user root -print 查找當(dāng)前目錄下屬主為root的文件蒸痹,并輸出
find ./ -group sunwill -print 查找當(dāng)前目錄下所屬主是sunwill的文件
find /var -mtime -5 -print 查找/var目錄下更改時間為5天內(nèi)的所有文件
find /var -mtime +5 -print 查找/var目錄下更改時間為5天以前的所有文件
find /var -newer "myfile1" ! -newer "myfile2" -print 查找/var目錄下比myfile1新春弥,但是比myfile2舊的所有文件。
find /var -type d -print 查找/var目錄下所有目錄
find /var -type l -print 查找/var目錄下所有的符號鏈接文件叠荠。
find . -size +1000000c -print 查找當(dāng)前目錄下大于1000000字節(jié)的文件
find / -name "con.file" -depth -print 查找根目錄下有無"con.file",若無則在其子目錄中查找
find . -type f -exec ls -l {} ; 查找當(dāng)前目錄下是否有普通文件匿沛,若有則執(zhí)行l(wèi)s -l
二、xargs命令
在 使用find命令的-exec選項處理匹配到的文件時榛鼎,find命令將所有匹配到的文件一起傳遞給exec逃呼。不幸的是,有些系統(tǒng)對能夠傳遞給exec的命 令長度有限制借帘,這樣find命令運行幾分鐘之后就算出現(xiàn)溢出錯誤蜘渣。錯誤信息通常是“參數(shù)列太長”或“參數(shù)列溢出”。
這就是xargs的用處所在肺然,特別是與 find命令一起使用,exec會發(fā)起多個進(jìn)程,而xargs會多個腿准,只有一個
find ./ -perm -7 -print | xargs chmod o-w 查找權(quán)限為7的文件并傳遞給chmod處理
三.grep介紹
(1)grep 的一般格式為 grep [options] 基本正則表達(dá)式 [文件] 字符串參數(shù)最好采用是雙引號括际起,一是以防被誤解為shell命令,二是可以用來查找多個單詞組成的字符串
-c:只輸出匹配行的記數(shù)
-i:不區(qū)分大小寫(只適用于單個字符)
-h:查詢多個文件時不顯示文件名
-H:只顯示文件名
-l:查詢多文件時只輸出包含匹配字符的文件名
-n:只顯示匹配行及其行號
-s:不顯示不存在或無匹配文本的錯誤信息吐葱。
-v:顯示不包含匹配文本的所有行街望。
(2)舉例說明:
grep [210] myfile 匹配myfile中以非2、1弟跑、0開頭的行
grep "[5-8][6-9][0-3]" myfile 匹配myfile中第一位為5|6|7|8灾前,第二位6|7|8|9,第三位為0|1|2|3的三個字符的行
grep "4{2,4}" myfile 匹配myfile中含有44,444或4444的行
grep "?" myfile匹配myfile中含有任意字符的行
(3)grep命令類名 [[:upper:]] 表示[A-Z] [[:alnum:]] 表示[0-9a-zA-Z] [[:lower:]] 表示[a-z] [[:space:]] 表示空格或者tab鍵 [[:digit:]] 表示[0-9] [[:alpha:]] 表示[a-zA-Z] 如:grep "5[[:digit:]][[:digit:]]" myfile 匹配myfile中含有5開頭接下去兩位都是數(shù)字的行孟辑。

四.awk介紹 可以從文件或字符串中基于指定規(guī)則瀏覽和抽取信息哎甲,是一種自解釋的變成語言蔫敲。 (1)awk命令行方式 awk [-F filed-spearator] 'command' input-files awk腳本:所有awk命令插入一個文件,并使awk程序可執(zhí)行炭玫,然后用awk命令解釋器作為腳本的首行奈嘿,以便通過鍵入腳本名稱來調(diào)用它。awk腳本是由各種操作和模式組成吞加。 模式部分決定動作語句何時觸發(fā)及觸發(fā)事件裙犹。(BEGIN,END) 動作對數(shù)據(jù)進(jìn)行處理,放在{}內(nèi)指明(print)
(2)分隔符衔憨、域和記錄 awk執(zhí)行時叶圃,其瀏覽域標(biāo)記為$1,$2,...$n.這種方法成為域標(biāo)識。$0為所有域践图。
(3)舉例說明:
awk '{print $0}' test.txt |tee test.out 輸出test.txt中所有行$0表示所有域
awk -F : '{print $1} test.txt |tee test.out' 同上盗似。。只是分隔符為":"
awk 'BEGIN {print "IPDate\n"}{print $1 "\t" $4} END{print "end-of-report"}' test.txt 開始時打印“IPDate”結(jié)束時打印“end-of-report”中間打印主體信息平项,比如總共匹配三條信息赫舒,則輸出如下: IPDate 1 first 2 second 3 third end-of-report
(4)匹配操作符 ~ 匹配,!~ 不匹配
cat test.txt |awk '$0~/210.34.0.13/' 匹配test.txt中為210.34.0.13的行
awk '$0!~/210.34.0.13' test.txt 匹配test.txt中不是210.34.0.13的行
awk '{if($1=="210.34.0.13") print $0}' test.txt 匹配 test.txt中第一個域為210.34.0.13的行。五闽瓢、五接癌、sed介紹
sed不與初始化文件打交道,它操作的只是一個拷貝扣讼,然后所有的改動如果沒有重定向到一個文件缺猛,將輸出到屏幕。
sed是一種很重要的文本過濾工具椭符,使用一行命令或者使用管道與grep與awk相結(jié)合荔燎。是一種非交互性文本流編輯。
(1)調(diào)用sed的三種方式
使用sed命令行格式為:sed [options] sed命令 輸入文件 使用sed腳本文件格式為:sed[options] -f sed腳本文件 輸入文件 sed腳本文件[options] 輸入文件 --不管是使用shell命令行方式或腳本文件方式销钝,如果沒有指定輸入文件有咨,sed從標(biāo)準(zhǔn)輸入中接受輸入,一般是鍵盤或重定向結(jié)果蒸健。
(2)sed 命令的options如下 -n:不打印 -c:下一命令是編輯命令 -f:如果正在調(diào)用sed腳本文件
(3)sed在文件中查詢文本的方式 --使用行號座享,可以是一個簡單的數(shù)字,或是一個行號的范圍 --使用正則表達(dá)式
(4)讀取文本的方式 x x為一行號 x,y 表示行號范圍從x到y(tǒng) /pattern/ 查詢包含模式的行 /pattern/pattern/ 查詢包含兩個模式的行 pattern/,x 在給定的行號上查詢包含模式的行 x,/pattern/ 通過行號和模式查詢匹配行 x,y! 查詢不包含指定行號x和y的行
(5)基本sed編輯命令 p 打印匹配行 d 刪除匹配行 = 顯示文件行號 a\ 在定位行號后附加新文本信息 i\ 在定位行號后插入新文本信息 c\ 用新文本替換定位文本 s 使用替換模式替換相應(yīng)模式 r 從另一個文件中讀文件 w 寫文本到一個文件 q 第一個模式匹配完成后推出或立即退出 l 顯示與八禁止ASCII代碼等價的控制字符 {} 在定位行執(zhí)行的命令組 n 從另一個文件中讀文本下一行似忧,并附加在下一行 g 將模式2粘貼到/pattern n/ y 傳送字符
(6)舉例說明: sed -n '2p' test.txt 打印第二行的信息(注意:-n是不打印不匹配的信息渣叛,若沒加-n,則打印文件的所有信息而不是匹配信息) sed -n '1,4p' test.txt 打印第一行到第四行的信息 sed -n '/los/p' test.txt模式匹配los盯捌,并打印出來 sed -n '2,/los/p' test.txt 從第二行開始淳衙。。知道匹配第一個los sed -n '/^$/p' test.txt 匹配空行 sed -n -e '/^$/p' -e '/^$/=' test.txt 打印空行及行號 sed -n '/good/a\morning' test.txt 在匹配到的good后面附加morning sed -n '/good/i\morning' test.txt 在匹配到的good前面插入morning sed -n '/good/c\morning' test.txt 將匹配到的good替換成morning sed '1,2d' test.txt 刪除第1和2行 sed 's/good/good morning/g' test.txt 匹配good并替換成goodmorning send 's/good/& hello /p' test.txt 匹配到good就在其后面加上hello send 's/good/ hello &/p' test.txt 匹配到good就在其前面加上hello
六.合并與分割(sort,uniq,join,cut,paste,split)
(1)sot命令 sort [options] files 許多不同的域按不同的列順序排序 -c 測試文件是否已經(jīng)排序 -m 合并兩個排序文件 -u 刪除所有同樣行 -o 存儲sort結(jié)果的輸出文件名 -t 域分隔符,用非空格或tab開始排序 +n :n 為列號箫攀,使用此列號開始排序 -n 指定排序是域上的數(shù)字分類項 -r 比較求逆 sort -c test.txt 測試文件是否分類過 sort -u test.txt 排序并合并一樣的行 sort -r test.txt 以相反的順序排列 sort -t "/" +2 test.txt 以"/"分隔肠牲,第二個域開始分類
(2)uniq命令 uniq [options ] files 從一個文本文件中去除或禁止重復(fù)行 -u 只顯示不重復(fù)行 -d 只顯示有重復(fù)數(shù)據(jù)行,每種重復(fù)行只顯示其中一行 -c 打印每一重復(fù)行出現(xiàn)次數(shù) -f :n為數(shù)字匠童,前n個域被忽略 uniq -f 2 test.txt 忽略前2個域
(3)join 命令 join [options] file1 file2 用來將來自兩個分類文本文件的行連在一起 -an埂材,n為一數(shù)字,用于連接時從文件n中顯示不匹配行 -onm 汤求,連接域俏险,n為文件號,m為域號 -jnm扬绪,n為文件號竖独,m為域號,使用其他域作連接域 -t 挤牛,域分隔符莹痢。用來設(shè)置非空格或tab鍵的域分隔符。
(4)split命令 split -output_file_size intput_filename output_filename 用來將大文件分割成小文件墓赴。 -b n竞膳,每個分割文件的大小n -C n,每個分割文件一行最多n字節(jié) -l n诫硕,每個分割文件的行數(shù) -n坦辟,同-l n split -10 test.txt 將test.txt分割成10行的小文件
(5)cut 命令 cut -c n1-n2 filename 顯示每行從開頭算起 n1 到 n2 的文字。 cut -c 3-5 test.txt 顯示test.txt中每行從第3到第5個字符

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末章办,一起剝皮案震驚了整個濱河市锉走,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌藕届,老刑警劉巖挪蹭,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異休偶,居然都是意外死亡梁厉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門椅贱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懂算,“玉大人,你說我怎么就攤上這事庇麦。” “怎么了喜德?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵山橄,是天一觀的道長。 經(jīng)常有香客問我舍悯,道長航棱,這世上最難降的妖魔是什么睡雇? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮饮醇,結(jié)果婚禮上它抱,老公的妹妹穿的比我還像新娘。我一直安慰自己朴艰,他們只是感情好观蓄,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著祠墅,像睡著了一般侮穿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毁嗦,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天亲茅,我揣著相機(jī)與錄音,去河邊找鬼狗准。 笑死克锣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腔长。 我是一名探鬼主播袭祟,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼饼酿!你這毒婦竟也來了榕酒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤故俐,失蹤者是張志新(化名)和其女友劉穎想鹰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體药版,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辑舷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了槽片。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片何缓。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖还栓,靈堂內(nèi)的尸體忽然破棺而出碌廓,到底是詐尸還是另有隱情,我是刑警寧澤剩盒,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布谷婆,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏纪挎。R本人自食惡果不足惜期贫,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望异袄。 院中可真熱鬧通砍,春花似錦、人聲如沸烤蜕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玖绿。三九已至敛瓷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斑匪,已是汗流浹背呐籽。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蚀瘸,地道東北人狡蝶。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像贮勃,于是被迫代替她去往敵國和親贪惹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容