Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile. 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é tongue. 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

Xotes #5 a écrit :

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