Linux下利用grep命令快速查找並定位C語言函數聲明所在的頭文件及其行數

查找first.c和second.c兩個文件中含有void的行:grep void first.c second.c

查找當前目錄下所有c文件中含有void的行:grep void *.c

查找當前目錄下所有文件(不含子文件夾)中含有void的行:grep void * (遇到文件夾會產生警告信息)

查找當前目錄下所有文件(不含子文件夾)中含有void的行,忽略子文件夾產生的警告信息:grep void * -d skip

查找當前目錄下所有文件及其子文件夾中含有void的行,並顯示行號:grep void -nr(-n是指顯示行號,-r是指遞歸遍歷文件夾)

查找指定文件夾Documents/codes/C下的所有文件及子文件夾含有void的行,並顯示行號:grep void -nr Documents/codes/C

查找指定文件夾Documents/codes/C下的所有文件及子文件夾含有單詞void的行,並顯示行號:grep void -nrw Documents/codes/C (-w是指匹配整個單詞)


正則表達式匹配:grep "[a-z]\{2\}" -nrw (查找含有兩個字母的單詞所在行和行號,{2}表示匹配兩次,{}必須要轉義)

忽略二進制文件的匹配結果,只顯示文本文件(-I,大寫的i):grep "s\{2\}" -Inrw(查找ss)

查找當前文件夾及子文件夾下文件名爲shm*.c中以shm開頭的單詞的行及其行號:grep "shm\w*" -Inrw --include=shm*.c


查找系統頭文件庫中指定函數名的函數聲明所在的頭文件和行數:

grep gtk_application_window_new -Inrw /usr/include/gtk-3.0/gtk(查找gtk_application_window_new函數的聲明)

grep g_signal_connect -Inrw /usr/include/glib-2.0/ --include=*.h (查找g_signal_connect的聲明,只查找*.h頭文件)

grep g_application_run -Inrw /usr/include/glib-2.0/ --include=*.h(查找g_application_run的聲明)

grep g_signal_ -Inr /usr/include/glib-2.0/ --include=*.h(查找所有含有g_signal_的函數的聲明,注意沒有-w選項)


查找當前文件夾及子文件夾下的文件中調用了指定函數名函數的c文件和行數:

grep g_signal_ -Inr --include=*.c(函數名部分匹配,只查找c文件)

grep g_signal_connect -Inrw(函數名完全匹配)


查看當前目錄及子目錄下的所有文件:find

查找當前目錄及子目錄下所有的c文件的文件名:find -name "*.c"(文件名必須要加引號)

查看/usr/include/gtk-3.0/gtk目錄及子目錄下的所有文件:find /usr/include/gtk-3.0/gtk

查找/etc目錄及子目錄下所有的conf文件的文件名:find /etc -name "*.conf"


不僅顯示匹配行,還要顯示後兩行(After):grep void -Inrw -A 2

不僅顯示匹配行,還要顯示前兩行(Before):grep void -Inrw -B 2

不僅顯示匹配行,還要顯示前後兩行(before and after):grep void -Inrw -C 2

大小寫不敏感:grep VOID * -i

發佈了78 篇原創文章 · 獲贊 39 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章