如何匹配然后通过命令行删除带有正则表达式的文件?
匹配的文件有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语法是我的意思,并确保正则表达式有问题。
答案 0 :(得分:1)
find
默认使用正则表达式的Emacs语法。这意味着没有像\d
或{4}
这样的内容。如果要实现此结果,则需要使用(也可以转义第二个点.
)。
find . -type f -regex '.*[0-9][0-9][0-9][0-9]\.tmp' -exec rm -rf {} \;
或使用支持您的正则表达式语法的不同-regextype
选项。