首页 > 解决方案 > 使用 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 终端独有的东西?我知道这个脚本不会删除任何文件,我只是想确保我首先正确识别它们。

标签: regexmacosterminal

解决方案


除了正则表达式,您可以组合两个-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

()对于捕获组,|对于交替和.文字时间段,都必须转义。.+?不是有效的组合。


推荐阅读