背景:我试图通过管道输出来获取我的根web目录中的所有代码文件(.html | .htm | .php | .js | .css)的总行数(递归)这进入xargs wc -l | grep total
。
$ find . -regex '.+\.php'
./inc/db.php
./inc/userauth.php
./index.php
.......... etc.
$ find . -regex '.+\.js'
./inc/jquery-1.7.1.js
./inc/script.js
$ find . -regex '.+\.(php|js)'
(returns nothing)
根据this,
abc(def|xyz) matches abcdef or abcxyz
所以不应该.+\.(php|js)
匹配所有的.php文件和.js文件吗?
答案 0 :(得分:6)
find
使用不同风格的正则表达式,因此您必须编写\(js\|php\)
而不是(js|php)
。
答案 1 :(得分:4)
find . -regex '.+\.\(php\|js\)'
转义特殊的字符,虽然它取决于你的shell(所以我在这里热心)。