2009-12-23 5 views
1

Comment remplacer un motif par un autre pour chaque fichier avec l'extension .cc et .h récursivement? Je ne sais pas si je dois l'empêcher d'aller dans les répertoires .svn.rechercher et remplacer dans le projet entier sur linux/osx

première tentative

#!/bin/bash 
for file in `find . -name '*.cc' -or -name '*.h'`; do \ 
    sed -e s/$1/$2/g -i temp $file 
done 

Répondre

2

Si votre projet est géré sous la plateforme linux, vous peut faire qqch comme ça à l'intérieur du bash:

for file in `find . -name '*.cpp' -or -name '*.h'`; do \ 
    cat $file | sed s/$1/$2/g > tmp 
    mv tmp $file 
done 

Chaque fichier svn a l'extension « * de -base » si tous ne changeront pas. Ce script affecte uniquement les fichiers * h et * cc.

+0

ne fonctionne pas. Qu'est-ce que je fais mal? #!/Bin/bash pour la recherche de fichier. -name '* .cc' -ou -name '* .h'; do \ sed -i s/$ 1/$ 2/g $ file done –

+0

Vous avez oublié le point-virgule après $ file et avant la commande 'done'. Le point-virgule est nécessaire car votre commande est sur une ligne. Ceci est la version correcte: #!/Bin/bash pour la recherche de fichier. -name '* .cc' -ou -name '* .h'; fais le fichier \ sed -i s/$ 1/$ 2/g $; terminé – kokosing

0

Vous pouvez rechercher et remplacer en utilisant des expressions régulières par certains fichiers dans l'explorateur de projet Eclipse, par exemple. Je suis sûr qu'il y a beaucoup d'outils qui peuvent faire cela, mais Elipse me vient en tête en premier.

Pour ce faire, vous devez appeler la boîte de dialogue « Rechercher », placez votre modèle dans le champ de recherche, spécifier les extensions avec un caractère générique et appuyez sur « Remplacer »,

Questions connexes