#1 Le 08/10/2013, à 18:33
- Xotes
[Résolu]Modification de fichier en ligne de commande
La question à déjà du être posée des centaines de fois, mais je cherche à modifier un, voir plusieurs
fichier en ligne de commande. La modification serait de remplacer les mots "www.site.com/blah/blah/blah/styles.css" en "css/styles.css"
Je suis désolé des poser cette question, mais après une petite heure de recherche infructueuse, je viens chercher l'information à la source ^^.
D'avance merci.
Xotes
PS: Je fais tourner ma machine avec un Ubuntu 12.04.3 et n'ai pas installé de programme d'édition de texte particulier.
Dernière modification par Xotes (Le 08/10/2013, à 20:48)
Hors ligne
#2 Le 08/10/2013, à 19:02
- pingouinux
Re : [Résolu]Modification de fichier en ligne de commande
Bonjour,
Tu as aussi sed :
sed 's#www.site.com/blah/blah/blah/styles.css#css/styles.css#g' fichier_1 >fichier_2
ou pour modifier directement fichier_1 :
sed -i 's#www.site.com/blah/blah/blah/styles.css#css/styles.css#g' fichier_1
Édité : Ajout de g à la fin de la commande, au cas où la chaîne recherchée apparaîtrait plusieurs fois sur une même ligne
Dernière modification par pingouinux (Le 08/10/2013, à 19:05)
Hors ligne
#3 Le 08/10/2013, à 20:27
- Xotes
Re : [Résolu]Modification de fichier en ligne de commande
Merci bien de pour votre vitesse de réponse . Si je peux abuser un peu, comment faire pour que la commande modifie tout un groupe de fichier en une fois ? (en gros tous les .html contenu dans différents sous dossiers au dossier où je travail)
Dernière modification par Xotes (Le 08/10/2013, à 20:27)
Hors ligne
#4 Le 08/10/2013, à 20:41
- Xotes
Re : [Résolu]Modification de fichier en ligne de commande
Mmmh au final j'ai trouvé, le problème venait du fait que la commande ne remplaçait simplement pas mes caractères... J'avais essayé de faire le malin en utilisant des chaînes de caractères, et ça n'a pas marché . Donc en tapant tout en toutes lettres, puis en rajoutant */*.html comme destination, il a fait comme je voulais ^^
Hors ligne
#5 Le 08/10/2013, à 20:42
- pingouinux
Re : [Résolu]Modification de fichier en ligne de commande
Attention, fais une copie des fichiers avant de lancer la commande, au cas où…
Cette commande traite tous les *.html du répertoire courant et de ses sous-répertoires.
find . -name \*.html -exec sed -i 's#www.site.com/blah/blah/blah/styles.css#css/styles.css#g' {} \;
Dernière modification par pingouinux (Le 08/10/2013, à 20:43)
Hors ligne
#6 Le 08/10/2013, à 20:44
- Xotes
Re : [Résolu]Modification de fichier en ligne de commande
C'est exactement ce que je voulais obtenir ^^ Merci bien de l'aide en tout cas, le problème était donc à la base de pouvoir lancer des pages en local mais avec le look des pages sur le web ^^. Merci encore pour ton aide. Sur ce j'aurais bien voulu marquer la conversation comme résolue, mais je ne vois pas où -_-'. Quoique, j'ai rien dit -_-, je dois être fatigué.
Xotes
Dernière modification par Xotes (Le 08/10/2013, à 20:49)
Hors ligne
#7 Le 08/10/2013, à 20:50
- pingouinux
Re : [Résolu]Modification de fichier en ligne de commande
puis en rajoutant */*.html comme destination
Attention : Si tu as, dans ton répertoire courant, les fichiers
fich1.html
rep1/fich2.html
rep1/rep2/fich3.html
tu ne traiteras que rep1/fich2.html
Si tu veux tous les traiter, c'est
shopt -s globstar
sed ....... **/*.html
Tu peux modifier ton premier message, et ajouter [Résolu] dans le titre.
Hors ligne