[Linux]搜索文件是否包含指定内容并返回文件名
在Linux系統(tǒng)中,find和grep都是很強(qiáng)大的命令,可以做很多很多事情,今天剛好有人問“如何查找哪些文件包含了特定字符串,并顯示這些文件的名稱”。
第一種方法:使用grep,假設(shè)搜索所有的.cpp文件是否包含'open'字符串,如果包含了,則顯示該文件,命令如下:
grep -rl 'open' . --include=*.cpp
則執(zhí)行結(jié)果如下:
./test/testall/file.cpp
./test/testall/shell_test.cpp
./test/daemontest/main.cpp
但是有時(shí)候只顯示文件名,也不知道出現(xiàn)的地方到底是什么樣子的,如果還有順帶查看一下那一行的內(nèi)容,可以用如下命令:
grep -rn 'open' . --include=*.cpp
則,執(zhí)行結(jié)果如下:
./test/testall/file.cpp:270:??? FILE *file = fopen(file_name.c_str(),"w");
./test/testall/file.cpp:273:??????????? printf("Can't open the file\n");
./test/testall/shell_test.cpp:29:?????? FILE *file = fopen(file_name, "r");
./test/daemontest/main.cpp:53:? openlog("daemontest",LOG_PID,LOG_USER);
顯示了文件名,行號以及該行內(nèi)容。
第二種方法:使用find命令+grep
假設(shè)搜索所有的.cpp文件是否包含'open'字符串,如果包含了,則顯示該文件,命令如下:
find -name '*.cpp' -exec grep -l 'open' {} \;
則結(jié)果如下:
./test/testall/file.cpp
./test/testall/shell_test.cpp
./test/daemontest/main.cpp
總結(jié)
以上是生活随笔為你收集整理的[Linux]搜索文件是否包含指定内容并返回文件名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贝叶斯定理学习
- 下一篇: VC,Windbg,gdb执行到指定代码