102 votes

Recherche et remplacement de texte dans plusieurs fichiers

Je veux savoir comment trouver et remplacer un texte spécifique dans plusieurs fichiers comme dans Notepad++ dans le tutoriel lié.

Par exemple : http://cybernetnews.com/find-replace-multiple-files/

164voto

Ici, j'utilise sed pour remplacer chaque occurrence du mot "cybernetnews" par "cybernet" dans tous les fichiers portant l'extension c du répertoire /home/user/directory/.

find /home/user/directory -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;

Une variante plus générique dans laquelle vous effectuez une recherche récursive à partir du répertoire d'exécution et n'opérez que sur des fichiers réguliers, lisibles et inscriptibles :

find ./ -type f -readable -writable -exec sed -i "s/cybernetnews/cybernet/g" {} \;

31voto

Sabacon Points 36458

L'éditeur de flux, sed, est un utilitaire puissant pour ce genre de travail et est mon premier choix, cependant, si vous voulez faire cela à partir d'un éditeur de texte ordinaire en utilisant une application native basée sur Ubuntu, je vous suggère de jeter un coup d'oeil à Jedit, Il est disponible dans les dépôts et peut être installé en tapant dans votre console :

sudo apt-get install jedit

Démarrez jedit, cliquez sur l'élément de menu Recherche, dans la liste des menus, cliquez sur l'élément Recherche dans le répertoire, la boîte de dialogue ci-dessous s'affiche :

Jedit Search In Folder Dialog

Il est similaire à celui de Notepad++ et fait la même chose, je crois que c'est ce que vous voulez.

20voto

int_ua Points 7978

Une autre option de l'interface graphique est regexxer : regexxer screenshot

13voto

Michael K Points 13190
perl -pi -e 's/oldtext/newtext/g' *

remplace toute occurrence de l'ancien texte par le nouveau texte dans tous les fichiers du dossier actuel. Cependant, vous devrez échapper tous les caractères spéciaux perl dans oldtext et newtext en utilisant la barre oblique inverse.

9voto

Stefano Mtangoo Points 2730

Vérifiez avec Geany il s'agit du remplacement parfait du NPP pour Linux. Vous pouvez faire exactement cela et utiliser des expressions rationnelles.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X