2013-04-04 1 views
0

Je voudrais utiliser lvremove pour supprimer plusieurs volumes en faisant correspondre une regex.Utilisation de lvremove avec regex

Par exemple, j'ai un groupe de volumes avec des volumes:

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

J'ai essayé:

lvremove volgroup/lv-1-* 

mais il semble que cela ne soit pas acceptée, je reçois l'erreur:

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

Je peux supprimer les volumes un par un, cependant,

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

Une recherche sur Google n'a pas donné de résultat pertinent, est-ce possible avec une regex? il y a beaucoup de volumes.

Répondre

1

Je suppose que vous obtenez un message d'erreur lorsque vous tapez

lvremove volgroup/lv-1-* 

parce que le shell tente d'étendre le nom volgroup/lv-1-* l'intérieur vous répertoire courant, par exemple, si vous exécutez cette commande à partir /tmp (par exemple) la coquille va essayer de trouver les fichiers existants dans le sous-répertoire /tmp/volgroup dont les noms commencent par lv-1-. Comme le shell ne trouve aucun fichier, il lance la commande lvremove avec l'argument volgroup/lv-1-* ... et je suppose qu'aucun de vos LV n'est nommé lv-1-*. Gardez à l'esprit que l'expansion du nom de fichier est effectuée par le shell, pas par la commande (lvremove dans votre cas). Asterisk metacharacter n'a aucune signification pour la plupart des commandes (comme lvremove) et gère comme tout autre caractère.

Les exemples suivants feront ce que vous essayez:

lvremove /dev/volgroup/lv-1-* 

ou

cd /etc 
lvremove volgroup/lv-1-* 

Dans les deux cas, la coquille se dilatent à tous les noms de fichiers correspondant --- De votre exemple ci-dessus, après les expansions de shell mes lignes de commande suggérées seront vraiment exécutés comme:

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

ou

cd /etc 
lvremove volgroup/lv-1-8a volgroup/lv-1-846a volgroup/lv-1-5a 

Lorsque le nombre d'arguments est énorme, la limite de la taille de la ligne de commande peut être atteinte. Dans ce cas, la commande find est utile:

Meilleures salutations.

Questions connexes