linux grep查找指定文件中包含某字符串的文件

直接上菜

需要查驗生產環境,某文件夾下,模糊匹配 *202005*的文件,是否包含某字符串'image_',並輸出文件名

#指令如下
grep -rl image_  *202005*

結果如下:
在這裏插入圖片描述

追根溯源,grep菜譜之強大

grep 簡介

grep(Global Regular Expression Print)命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本。

grep指令簇包括grep、egrep和fgrep,可以通過-G、-E、-F命令行選項來使用grep,egrep和fgrep的功能。

  • grep可以通過-E、-F命令行選項來使用egrep和fgrep的功能。
  • egrep 是grep的擴展,支持更多的re元字符
  • fgrep包含fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義

grep 參數介紹

#可以通過grep --help可查看
 -r:搜索子目錄
 -d:不搜索子目錄
 -c:只輸出匹配行的計數。
 -C:匹配的上下文分別顯示[number]行
 -i:不區分大小寫。
 -h:查詢多文件時不顯示文件名。
 -l:查詢多文件時只輸出包含匹配字符的文件名。
 -L:列出不匹配的文件名
 -w:只匹配整個單詞,如 hello不匹配helloabc
 -n:顯示匹配行及行號。
 -s:不顯示不存在或無匹配文本的錯誤信息。
 -v:顯示不包含匹配文本的所有行。
 --color=auto :找到的關鍵詞部分加上顏色的顯示
 

正則說明

  \:忽略原有含義,來表示正則含義。
  ^:匹配正則表達式的開始行。
  $: 匹配正則表達式的結束行。
  \<:從匹配正則表達 式的行開始。
  \>:到匹配正則表達式的行結束。
  [ ]:單個字符,如[A]即A符合要求 。
  [ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。
  .:所有的單個字符。
  *:所有字符,長度可以爲0。

實例說明

  • grep -rl hello *202005* :在文件名 包含202005的文件中查找hello字符串,並返回該文件。(不加 -l參數會返回行內容)
  • grep -rl ‘hello’ a.txt b.txt c.txt:在a,b,c三個文件中查找hello,並返回該文件。
  • grep '[0-9]\{4\}' a.txt:查找包含4個及以上數字的 行返回。(注意:\表示啓用正則含義,或者用 egrep '[0-9]{4}' a.txt
  • grep hello /usr/file/* | less 當匹配多個行,可以通過管道轉到 less 上查看。
  • grep pattern1 a.txt| grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
  • grep pattern1 | pattern2 a.txt: 匹配正則pattern1 或pattern2 的行。
  • grep hello* :會匹配 ‘helloa’、’hellob’、’yhelloa’等。
  • grep ‘\<hello’ * :匹配’hello’和’helloa’,但不是’yhello’。
  • grep ‘\<hello\>’ 只匹配’hello’,而不是’yhello’或’helloa’等其他的字符串。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章