将lvremove与regex一起使用

将lvremove与regex一起使用,regex,lvm,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" succe

我想使用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

谷歌搜索没有抛出任何相关的结果,是否可以使用正则表达式来实现这一点?有很多卷。

我猜您键入时会收到一条错误消息

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

请记住,文件名扩展是由shell执行的,而不是由命令执行的(本例中为lvremove)。星号元字符对于大多数命令(如lvremove)和句柄没有任何其他字符的含义

以下示例将完成您正在尝试的操作:

lvremove /dev/volgroup/lv-1-*

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

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

当参数数量很大时,可能会达到命令行大小的限制。在这种情况下,
find
命令非常有用:

find /dev/volgroup -type l -exec lvremove -f '{}' ';'
致以最良好的祝愿

cd /etc
lvremove volgroup/lv-1-8a volgroup/lv-1-846a volgroup/lv-1-5a
find /dev/volgroup -type l -exec lvremove -f '{}' ';'