使用lvremove与正则表达式

时间:2013-04-04 10:44:19

标签: regex lvm

我想使用lvremove通过匹配正则表达式来删除多个卷。

例如,我有一个卷组的卷组:

lv-1-8a
lv-1-846a
lv-1-5a
...

我试过了:

lvremove volgroup/lv-1-*

但似乎不接受,我收到错误:

One or more specified logical volumes(s) not found.

但我可以逐个删除卷

lvremove volgroup/lv-1-846a
Logical volume "lv-1-846a" successfully removed

谷歌搜索没有抛出任何相关结果,是否可以使用正则表达式执行此操作?有很多卷。

1 个答案:

答案 0 :(得分:1)

我猜您在键入

时会收到错误消息
lvremove volgroup/lv-1-*

因为shell尝试在当前目录中扩展名称volgroup/lv-1-*,即,如果从/tmp运行该命令(例如),shell将尝试在子目录{{}中查找现有文件1}},其名称以/tmp/volgroup开头。由于shell没有找到这样的文件,因此它会使用参数lv-1-启动lvremove命令...我猜你的LV都没有被命名为volgroup/lv-1-*

请记住,文件名扩展是由shell执行的,而不是由命令(在您的情况下为lvremove)执行的。 Asterisk元字符对于大多数命令(如lvremove)没有任何意义,并且与任何其他字符一样处理。

以下示例将执行您尝试的操作:

lv-1-*

lvremove /dev/volgroup/lv-1-*

在这两种情况下,shell都将扩展为所有匹配的文件名---从上面的示例中,在shell扩展后,我建议的命令行实际上将运行为:

cd /etc
lvremove volgroup/lv-1-*

lvremove /dev/volgroup/lv-1-8a /dev/volgroup/lv-1-846a /dev/volgroup/lv-1-5a

当参数数量很大时,可能会达到命令行大小的限制。在这种情况下,cd /etc lvremove volgroup/lv-1-8a volgroup/lv-1-846a volgroup/lv-1-5a 命令很有用:

find

最好的问候。