GNU/Linux >> Tutoriels Linux >  >> Linux

Comment remplacer toutes les occurrences d'un mot dans tous les fichiers dans la ligne de commande Linux

Question :Comment remplacer toutes les occurrences d'un mot dans tous les fichiers du dossier donné ?

Considérez un scénario problématique où vous avez un site Web dans lequel vous vous référez souvent à l'année en cours. Chaque année, vous devez mettre à jour l'année. Vous pouvez facilement trouver toutes les occurrences dans tous les fichiers, mais il faut éviter de changer manuellement l'année, une par une, dans chaque fichier.

Solution

Donc que fais-tu? L'une des nombreuses façons de trouver toutes les occurrences, puis de remplacer le terme recherché consiste à utiliser une combinaison de commandes find et sed.

Vous pouvez facilement le faire avec une seule commande :Dans cet exemple, vous avez 50 pages Web dans le dossier pages. Cette commande changera instantanément toutes les occurrences de "2017" en "2018":

find ~/public_html/my_website/pages -type f -exec sed -i 's/2017/2018/g' {} \;

Pour rendre l'exemple ci-dessus un peu plus générique, voici ce que vous devez faire :

find <path_to_directory> -type f -exec sed -i 's/<search_text>/<replace_text>/g' {} \;

Dans la commande ci-dessus, remplacez , et par les données réelles.

Explication

Ce que vous faites ici, c'est que vous utilisez la commande find pour obtenir tous les fichiers des répertoires actuels et de ses sous-répertoires. L'option -type f garantit que vous n'obtenez que des fichiers, pas des répertoires.

Et puis vous transmettez le résultat à l'aide de la commande exec à la commande sed. La commande sed recherche le texte et le remplace.

Le {} \; fait partie de la commande exec. L'espace entre } et \ est obligatoire.

Cette astuce Linux a été suggérée par Lectrice du manuel Linux, Jane Hadley. Vous avez une meilleure solution pour ce problème? Partagez-le dans les commentaires.


Linux
  1. Comment rechercher des fichiers avec la commande fd sous Linux

  2. Comment utiliser la commande Linux find pour rechercher des fichiers

  3. Comment trouver tous les fichiers épars sous Linux

  4. Commande Linux :Comment "trouver" uniquement des fichiers texte ?

  5. Comment trouver tous les fichiers se terminant par .rb avec Linux ?

Comment trouver des fichiers sous Linux

Comment rechercher des fichiers sous Linux avec la commande Find

Comment rechercher des fichiers à partir de la ligne de commande Linux

Comment rechercher des fichiers avec la commande fd sous Linux

Comment trouver une adresse IP dans la ligne de commande Linux

Comment trouver des dossiers sous Linux