regex - 使用 mac 终端删除文件
问题描述
我正在尝试在终端中使用 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 终端独有的东西?我知道这个脚本不会删除任何文件,我只是想确保我首先正确识别它们。
解决方案
除了正则表达式,您可以组合两个-name
语句:
$ find -name '* [[:digit:]].py' -o -name '* [[:digit:]].js'
./manage 2.py
./manage 3.py
./index 2.js
.py
这将查找以空格和扩展名为或的数字结尾的任何内容.js
。
如果你想使用你的正则表达式,你必须以不同的方式转义一些东西(参见默认正则表达式语法):
$ find -regex '.+\w+ [0-9]\.\(py\|js\)$'
./manage 2.py
./manage 3.py
./index 2.js
()
对于捕获组,|
对于交替和.
文字时间段,都必须转义。.+?
不是有效的组合。
推荐阅读
- css - 如何在 bootstrap .col 中更改 br 行高
- c++ - 为什么允许在自己的声明中使用变量?
- php - 在 wordpress 中获取自定义帖子元
- excel - Excel:计算一个值在一行中出现的次数
- ios - Flutter:升级到 Flutter facebook login v3.00 后运行 pod install 时出错
- excel - 确定以上单元格的值在VBA for Excel中相同后如何添加一行
- python - 如何从字典的输出中删除括号
- python - 如何找到两个元组之间的共同元素
- python - python - 如何将csv文件中的列转换为python中的数组,第一个值是数组变量名?
- aws-cdk - 是否可以创建自定义 cdk init 模板以将 pipenv 用于我的 python 项目?