为什么“ rm *(1)*”删除名称中不包含字符串“(1)”的文件?

时间:2019-02-10 16:05:53

标签: bash

我在我的downloads文件夹(Linux的Windows子系统)中使用了rm命令。尽管我告诉它删除其中带有(1)的任何内容,但都删除了downloads文件夹中的所有文件。为什么会发生这种情况?

rm *(1)*

1 个答案:

答案 0 :(得分:2)

*(...)extglob syntax,代表“ ...中的零个或多个”。

因此,您告诉您的shell传递rm一个参数列表,该列表由所有以零个或多个1开头且后缀为后缀的文件组成。每个可能的文件名都与此模式匹配,因此结果等于rm *


如果要确定子字符串是文字字符串,而不是将其视为glob语法,请始终将其引用:

rm -- *'(1)'*

...将在所有POSIX超集系统上保持一致,包括实现类似extglob的扩展的系统。