我正在搜索一些文件:find . -name "*.en.php"
和find . -name "*.fr.php"
。
我希望两个命令在同一行中,例如:find . -name "*.(en|fr).php"
,但它不起作用。
提前感谢您的帮助。
编辑
我的命令是这样的:find . -not -path Config -name "*.fr.php"
,是否有解决方案不重复-not -path Config
?
答案 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' ...
您可以在man
(OPERATORS
,and
,or
,括号等下列出的not
页面中查看所有运营商。< / p>