找到&用正则表达式删除

时间:2016-02-17 00:38:46

标签: regex find

如何匹配然后通过命令行删除带有正则表达式的文件?

匹配的文件有4位数字,然后是.tmp,例如

something0001.tmp
something-else-0090.tmp
something-6548.tmp

但不是

something001.tmp
somethingelse99.tmp

尝试了各种版本的

find . -type f -regex '.*\d{4}.tmp' -exec rm -rf {} \;

RegExr测试确定匹配,但ssh语法是我的意思,并确保正则表达式有问题。

1 个答案:

答案 0 :(得分:1)

find默认使用正则表达式的Emacs语法。这意味着没有像\d{4}这样的内容。如果要实现此结果,则需要使用(也可以转义第二个点.)。

find . -type f -regex '.*[0-9][0-9][0-9][0-9]\.tmp' -exec rm -rf {} \;

或使用支持您的正则表达式语法的不同-regextype选项。