我试图在终端中使用find删除PyCharm似乎随机创建的一些文件。它创建了以下文件的副本:
manage.py
manage 2.py
manage 3.py
index.js
index 2.js
所以我要匹配的模式是一个字符串,后跟一个空格,然后是一个带有不同结尾的数字。目前我正在尝试:
find pathToMyFiles -type -f -regex '.+?\w+ [0-9](.py|.js)$'
即使我去regexer或其他任何regex测试站点时,它捕获了我的测试字符串,也无法识别目录中的任何文件,我是否缺少mac终端专有的内容?我知道此脚本不会删除任何文件,我只是在尝试确保首先正确识别它们。
答案 0 :(得分:1)
您可以结合使用两个-name
语句来代替正则表达式:
$ find -name '* [[:digit:]].py' -o -name '* [[:digit:]].js'
./manage 2.py
./manage 3.py
./index 2.js
这会找到所有以空格和扩展名为.py
或.js
的数字结尾的内容。
如果要使用正则表达式,则必须以不同的方式进行一些转义(请参见default regular expression syntax):
$ find -regex '.+\w+ [0-9]\.\(py\|js\)$'
./manage 2.py
./manage 3.py
./index 2.js
捕获组的 ()
,交替的|
和文字周期的.
必须全部转义。 .+?
不是有效的组合。