Comme les autres gars l'ont déjà mentionné, xargs est votre ami. C'est un outil vraiment puissant et je vais essayer de l'expliquer et de fournir une solution de contournement pour un gotcha commun.
Ce que fait xargs, c'est de prendre une ligne de l'entrée et de l'ajouter à une autre commande, en exécutant cette autre commande pour chaque ligne de l'entrée. Ainsi, en tapant locate foobar | xargs rm -f
, la sortie de la commande Locate sera corrigée à la fin de la rm -f
commande et exécutée pour chaque ligne produite par locate foobar
.
Le gotcha:
Mais que se passe-t-il s'il y a des espaces dans vos lignes retournés par Locate? Cela interrompra la rm -f
commande car les arguments passés à rm doivent être des fichiers (sauf si vous utilisez le commutateur -r) et un chemin de fichier doit être échappé ou cité s'il contient des espaces.
xargs fournit le commutateur -i, pour remplacer l'entrée dans la commande qui suit au lieu de simplement l'ajouter. Je changerais donc la suggestion en
locate foobar | xargs -ixxx rm -f 'xxx'
qui ne se cassera désormais que si les noms de fichiers renvoyés par Locate contiennent des apostrophes.
Je dois être d'accord avec qbi, que vous devez faire attention à l'utilisation de rm -f ! Utilisez l'indicateur -p pour xargs, ou exécutez simplement la barre de localisation par lui-même avant de l'alimenter en xargs, ou supprimez -f de rm.
locate foobar | xargs -p -ixxx rm -f 'xxx'
rm -i
Locate fooBar ''