^字符在bash正则表达式中无法正常运行

时间:2017-11-10 19:12:09

标签: regex bash shell unix rm

我有一个标记为123456,{{1}的测试文件目录}},7891011以及标有12ex1,{{的其他人1}}等...

我尝试删除此目录中的所有文件,其名称不包含' ex'使用以下代码:

ex2

它成功删除了所有标有一位数的文件,但是文件10-12仍然存在,我无法理解原因。

有人可以解释为什么会这样吗?

目前留在此目录中的是所有以' ex'开头的文件,以及标有ex3rm [^a-z] 10的文件。再次使用该命令时,将显示以下错误消息:

  

rm:[^ a-z]:没有这样的文件或目录

1 个答案:

答案 0 :(得分:2)

bash中的文件名匹配是使用globs完成的,而不是正则表达式。

但是你需要使用extglobs来做你想做的事。

shopt -s extglob
rm !(ex)*