使用正则表达式查找和删除

find & delete with regex

如何通过命令行用正则匹配并删除文件?

匹配的文件有 4 位数字然后是 .tmp eg

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 语法,我确信正则表达式有问题。

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

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

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