我正在尝试查找带有*.c
和*.h
扩展名的文件。我使用以下命令
find "$path" -type f -iname "*.c" -o -iname "*.h" -exec ls {} \;
这仅执行 ls*.h
匹配项。我试过-o -iname *.c -o -iname *.h
同样的事情发生。我想在 c 和 h 文件上执行?
我正在尝试查找带有*.c
和*.h
扩展名的文件。我使用以下命令
find "$path" -type f -iname "*.c" -o -iname "*.h" -exec ls {} \;
这仅执行 ls*.h
匹配项。我试过-o -iname *.c -o -iname *.h
同样的事情发生。我想在 c 和 h 文件上执行?
您需要对不相交的子句进行分组:
如果没有它,
find
您的命令将解释为两组不相交的子句:-type f -iname "*.c"
一方面,-iname "*.h" -exec ls {} \;
另一方面。这就是为什么您只能看到*.h
匹配项。ls
顺便说一句,这样跑步并没有什么意义。你不妨使用(但也许
ls
是一个占位符)。您还可以通过组合两个 glob 来简化命令:
(依赖于默认
-print
操作)。