[笔记] find: 同时在多种类型文件中搜索字符串
主要使用find
的-o
参数(or的含义)和xargs
。
举个例子:(注:在cygwin环境下测试)
★ 准备文件和简单的数据
$ echo "hello world" > a.cpp
$ echo "hello China" > b.cpp
$ echo "hello java" > c.java
$ echo "hi header" > a.h
$ echo "hi c" > d.c
$ echo "hi cc" > e.cc
★ 查找所有c和c++文件
$ find . -iname "*.c*"
./a.cpp
./b.cpp
./d.c
./e.cc
★ 查找所有c、c++文件和头文件
$ find . -iname "*.c*" -o -iname "*.h*"
./a.cpp
./a.h
./b.cpp
./d.c
./e.cc
★ 查找所有cpp和java文件
$ find . -iname "*.cpp" -o -iname "*.java"
./a.cpp
./b.cpp
./c.java
★ 在所有cpp和java中搜索hello
字符串
$ find . -iname "*.cpp" -o -iname "*.java" | xargs grep -i hello
./a.cpp:hello world
./b.cpp:hello China
./c.java:hello java
★ 在所有c、c++文件、头文件和java文件中搜索hello
和hi
字符串
$ find . -iname "*.c*" -o -iname "*.java" -o -iname "*.h" | xargs grep -i "hello\|hi"
./a.cpp:hello world
./a.h:hi header
./b.cpp:hello China
./c.java:hello java
./d.c:hi c
./e.cc:hi cc