使用 `find` 查找多个文件扩展名

使用 `find` 查找多个文件扩展名

我使用以下命令来计算 JAVA 文件中的文本行数:

find . -name '*.java' | xargs wc -l

我如何修改find命令参数以匹配多个文件扩展名?例如,我想对 CPP、C 和 H 文件使用上述操作。

答案1

使用-oOR 选项。例如,这将列出.cpp和文件.c.h

find . -name \*.cpp -o -name \*.c -o -name \*.h

答案2

您将需要使用 -o 选项。例如,下面的语句查找文件夹中的所有 png、jpg 和 gif 文件。

find . \( -iname \*.png -o -iname \*.jpg -o -iname \*.gif \)

我使用 -iname 选项,以便匹配不区分大小写。

答案3

$ find /path/ -name '*.cpp' -or -name '*.c' -or -name '*.h'

“-or”表示我正在寻找两个集合中的其中一个或两个。

我最近在这里写了一个使用布尔运算符进行查找的快速指南:http://jamesfishwick.com/2012/linux-find-and-boolean-operators

答案4

使用

find path/to/dir -name "*.ext1" -o -name "*.ext2"

解释

  1. 第一个参数是您要搜索的目录。
  2. 默认情况下find进行递归。
  3. 代表。因此上面的意思是搜索这个通配符或这个。如果你只有一个模式-o-or那么就不需要-o
  4. 通配符模式两侧的引号是必需的。

相关内容