Cette question a déjà des réponses ici :

Commentaires

  • Vous voulez sed, pas grep. De plus, vous ' utilisez des guillemets " intelligents ", donc grep recherchera les chaîne littérale “string”, y compris les guillemets. Vous voulez "string" (ou probablement encore mieux, 'string', sauf si vous prévoyez dutiliser lexpansion des paramètres dans le terme de recherche).
  • grep isn ' t utilisé pour remplacer des chaînes. Il ' est utilisé pour rechercher des chaînes. Pour les remplacer, vous avez besoin de sed ou awk.
  • Ce serait donc quelque chose comme
  • sed –recursive –ignore-case " string ", " remplacement -string "
  • Connexes: rechercher et remplacer en utilisant grep (pas sed) – cependant vous pourriez utiliser grep --recursive --files-with-matches pour construire une liste de noms de fichiers à transmettre à sed

Réponse

Essayez cette commande

grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g" 

Vous pouvez essayez find et sed

find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \; 

Commentaires

  • Dois-je remplacer " matchstring " par la nouvelle ou lancienne chaîne et si je veux le faire depuis le répertoire racine du serveur?
  • Par exemple si je remplace " wavbyte " avec " gitship " de le répertoire racine du serveur Ubuntu serait-il:
  • find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
  • Daccord, mais wavbyte est à de nombreux endroits différents sur le serveur. Comment vais-je mémoriser tous ces emplacements, puis entrer manuellement et passer à gitship?
  • Laissez-nous continuer cette discussion dans le chat .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *