如何使用正则表达式在命令行中删除文件?

如何使用正则表达式在命令行中删除文件?

假设我有 20 个名为 FOOXX 的文件,其中 XX 是文件编号,例如 01、02 等。

目前,如果我想删除所有低于 10 的文件,这很容易,我只需使用通配符,例如rm FOO0*

但是,如果我想删除一定范围内的特定文件,例如 13-15,这会变得更加困难。

rm FOO[13-15]不起作用,并询问我是否要删除所有文件。Likewserm FOO1[3-5]希望删除所有以 FOO1 开头的文件

那么,删除此类文件的最佳方法是什么?

我已经尝试过 bash 和 zsh,我认为对于如此基本的任务,它们并没有太大区别?

答案1

在 bash 中你可以使用:

rm FOO1{3..5}

或者

rm FOO1{3,4,5}

删除 FOO13、FOO14 和 FOO15。

Bash 扩展括号已记录这里

答案2

对于未来的读者,该find命令还可以删除文件。我解决了类似的问题:

find . -type f -regex '...' -delete

但所选的答案是对这个问题最简单的回答。

答案3

ls | grep regex | xargs rm

相关内容