【Linux命令】在當前目錄下查找出現特定字符串的文件位置信息

有時候咱們我會碰到這樣的問題:我要查找一個字符串在多個文件裏總共出現了幾回,或者一個方法、一個函數在項目裏調用了幾回,都在哪裏調用,那咱們要如何查找,如何統計這些信息呢?java


場景復現


首先,要查找字符串,確定優先考慮全局搜索命令grep(global search regular expression and print out the line:正則匹配全局搜索並打印行)。若是搜索的範圍比較不明確,只知道在某個文件夾下,那能夠先cd該目標路徑,而後用如下最簡單的命令:express

grep -rn "待匹配字符串" ./函數

r :表示遞歸excel

n :表示查詢結果顯示行號code

結果是這樣的: 【文件路徑】:【行號】 【當前行信息】blog

以下圖:遞歸

image

若是你知道的範圍縮小了,或者只想在一些特定類型的文件中查找,好比,只想在該目錄下的全部java文件查找,能夠用如下的方式:字符串

find ./ -type f -name "*.java" | xargs grep -rn "待匹配字符串"io

以下圖:模板

image

該命令的做用是在當前目錄下,查找全部java文件,而後將每一個文件的路徑做爲參數傳給grep "待匹配字符串"命令,最終輸出結果,換句話說,就是隻在當前目錄下的java文件中查找字符串

可能你拿到結果,還想記錄到文件中,那麼能夠用如下命令:

touch file.txt

find ./ -type f -name "*.java" | xargs grep -rn "待匹配字符串" | info.txt

該命令將上面的結果經過管道輸出到文件中,再配合一波excel,想幹啥幹啥

文件裏就寫入了,以下圖

image

而後你又說我不用記錄,只想統計在該目錄下的java文件裏出現了幾回,那就用:

find ./ -type f -name "*.java" | xargs grep -rn "待匹配字符串" | wc -l
以下圖:

image

你可能又會說,我我查的字符串是個方法名,我想查看一下後面的函數體實現,但查出的文件路徑好長,懶得cd進去,那你能夠估算一下方法體的行數大小,從上面查詢到的文件路徑和行號信息,執行一下命令直接看

sed -n 100,200p "file.java的路徑"

該命令會將模板文件的100-200行打印出來

以下圖:

image

有沒有更實用的場景呢,歡迎留言討論!

相關文章
相關標籤/搜索