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

猜你喜欢

转载自blog.csdn.net/zlk1214/article/details/78690854