Linux中grep查詢含有某字串的所有檔案

2021-10-19 21:35:31 字數 1460 閱讀 3856

在專案中,經常會遇到批量修改表名或者key/ password的情況。

如果伺服器上只有1個專案,我們可以在pycharm中全域性搜尋,然後替換。但如果伺服器上有多個專案,不清楚這些表名/key/ password都在哪些專案中的哪些檔案中,乙個個開啟pycharm查詢有些麻煩,還可能會漏掉;所以可以考慮使用grep命令,在伺服器上檢視需要替換的表名/key/ password都在哪些專案/檔案中,然後再開啟pycharm進行全域性搜尋並替換。

1、grep選項:

* : 表示當前目錄所有檔案,也可以是某個檔名

-r 是遞迴查詢

-n 是顯示行號

-r 查詢所有檔案包含子目錄

-i 忽略大小寫

2、有意思的命令列引數:

grep -i pattern files :不區分大小寫地搜尋。預設情況區分大小寫

grep -l pattern files :只列出匹配的檔名,不列出路徑

grep -l pattern files :列出不匹配的檔名

grep -w pattern files :只匹配整個單詞,而不是字串的一部分(如匹配『magic』,而不是『magical』)

grep -c number pattern files :匹配的上下文分別顯示[number]行

grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行

grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行

3、有些用於搜尋的特殊符號:

\< 和 \> 分別標註單詞的開始與結尾。

例如:grep man * 會匹配 『batman』、『manic』、『man』等

grep '\' 只匹配『man』,而不是『batman』或『manic』等其他的字串。

'^':指匹配的字串在行首

'$':指匹配的字串在行尾

4、例子:

1 --遞迴查詢目錄下含有該字串的所有檔案

2 grep -rn "data_chushou_pay_info" /home/hadoop/nisj/automationdemand/

3 4 --查詢當前目錄下字尾名過濾的檔案

5 grep -rn "data_chushou_pay_info" *.py

6 7 --當前目錄及設定子目錄下的符合條件的檔案

8 grep -rn "data_chushou_pay_info" /home/hadoop/nisj/automationdemand/ *.py

9 10 --結合find命令過濾目錄及檔名字尾

11 find /home/hadoop/nisj/automationdemand/ -type f -name '*.py'|xargs grep -n 'data_chushou_pay_info'

Linux中grep查詢含有某字串的所有檔案

在專案中,經常會遇到原始表名等已更換需要在指令碼中批量替換的情況。但是這些涉及到哪些表,乙個個的查詢有些麻煩還可能會漏掉 直接在linux上替換掉可能不能進行很好的版本同步 所以,可以考慮通過find與grep命令組合先查詢出需要修改的指令碼再進行統一處理。遞迴查詢目錄下含有該字串的所有檔案 gre...

grep命令 查詢包含某內容的檔案

linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。grep家族包括grep egrep和fgrep。egrep和...

查詢某程序 但過濾grep程序本身 方法

在程序表中查詢特定程序的命令通常如下 python view plain copy ps ef grep some string 輸出時,不僅會輸出將要查詢的程序資料,清空包括grep程序本身的資料,因為查詢串包含在grep呼叫中。過濾grep本身方法有 ps ef grep some string...