或以bash模式的条件

时间:2011-08-25 15:25:55

标签: bash unix shell

我正在搜索一些文件:find . -name "*.en.php"find . -name "*.fr.php"

我希望两个命令在同一行中,例如:find . -name "*.(en|fr).php",但它不起作用。

提前感谢您的帮助。

编辑

我的命令是这样的:find . -not -path Config -name "*.fr.php",是否有解决方案不重复-not -path Config

3 个答案:

答案 0 :(得分:3)

尝试:

find -name "*.en.php" -o -name "*.fr.php"

例如,如果您想在每个找到的文件上运行命令,那么您需要额外() (这将计算所有找到的文件中的行数):

find \( -name "*.en.php" -o . -name "*.fr.php" \) -exec cat {} \; | wc -l

答案 1 :(得分:0)

使用find -o运算符,例如

find . -name "*.en.php" -o -name "*.fr.php"

编辑:

像这样:

find . -path './Config' -prune -o \( -name "*.en.php" -o -name "*.fr.php" \)

find中的默认运算符(如果有一个是ommited)是and,括号将名称表达式分组。我添加了-prune以防止查找再次进入Config目录。

答案 2 :(得分:0)

您应该能够将表达式与or运算符组合在一起,因此:

find . -name '*.en.php' -o -name '*.fr.php' ...

您可以在manOPERATORSandor,括号等下列出的not页面中查看所有运营商。< / p>