如何在Linux中使用正则表达式查找并过滤特定命名的多个文件?
精准匹配并删除指定格式文件
你的问题出在正则只匹配了./root开头的部分,没有限定后续的文件名格式,所以会匹配所有包含./root的路径(比如root目录、root.abc这类不符合要求的文件)。要精准匹配root.file后接一串数字的文件,调整正则即可:
1. 先查看匹配结果(避免误删)
执行以下命令确认匹配的文件是否正确:
find ./ -regex '\./root\.file[0-9]+' -print
正则说明:
\./root\.file:匹配路径开头的./root.file,其中.用\.转义(因为正则里.代表任意字符)[0-9]+:匹配一个或多个数字,对应文件名末尾的数字部分
2. 直接删除匹配文件
确认匹配正确后,添加-delete选项执行删除(注意-delete必须放在命令最后):
find ./ -regex '\./root\.file[0-9]+' -delete
补充:简化写法(如果不需要严格正则匹配)
如果只是匹配以root.file开头的文件,也可以不用正则,用-name选项更简单:
find ./ -name 'root.file*' -print # 删除的话 find ./ -name 'root.file*' -delete
这种写法更直观,适合不需要精确限定数字后缀的场景。
内容的提问来源于stack exchange,提问作者GrooveInShell
相关产品推荐
相关产品推荐

