J'essaie de canaliser la grep
sortie vers rm
, mais elle produit des trucs inutiles. Est-ce qu'un interrupteur est nécessaire rm
? Ou peut rm
peut être fourni une expression rationnelle directement?
ls | grep '^\[Daruchini'| rm
rm: opérande manquant Essayez «rm --help» pour plus d’informations.
Réponses:
Vous devez utiliser
xargs
pour transformer une entrée standard en arguments pourrm
.(Attention aux caractères spéciaux dans les noms de fichiers; avec GNU grep, vous pourriez préférer
)
De plus, bien que le shell n'utilise pas les expressions rationnelles, c'est un modèle simple:
(Pendant ce temps, je pense avoir besoin de plus de sommeil.)
la source
rm Dar*
, pasrm !(Dar*)
.zsh
^
mode (semblable à labasg
!
chose).| tr "\n" "\0"
avant lexargs
bit. Vu dans ce post: stackoverflow.com/questions/20307299/…Ne pas analyser la sortie de
ls
.Ici, il est très simple de faire en sorte que le shell filtre les fichiers souhaités. Notez que c'est le shell qui développe le motif
Dar*
, pas larm
commande. Le développement de motif effectué par le shell s'appelle globbing .Dans les cas plus complexes, recherchez la
find
commande.la source
Si vous souhaitez délimiter la sortie
grep
par des nouvelles lignes plutôt que par des espaces, vous pouvez le spécifierxargs
via cette-d
option.(comme décrit dans cette question)
la source
Pour passer la sortie sous forme d'argument, j'ai tendance à utiliser une boucle while puisque je ne suis pas familier avec xargs.
la source
La meilleure commande pour moi est:
la source