我想使用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
谷歌搜索没有抛出任何相关结果,是否可以使用正则表达式执行此操作?有很多卷。
答案 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
最好的问候。