IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

script modifiant le nom des fichiers ET leurs chemins relatifs dans .htm


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Par défaut script modifiant le nom des fichiers ET leurs chemins relatifs dans .htm
    bonjour ou bonsoir à tous,
    voila, je viens de créer un serveur apache à partir de site recupéré sur un serveur mac ou les webmasters ne faisait pas attention à la casse puisque comme windows, ce serveur ne l'est pas. Le probleme est que ce n'est pas le cas sous linux !!!
    je dois donc modifier tous les noms de fichiers en minuscule ainsi que leurs chemins relatifs dans les fichiers .htm , .php et .html.
    J'ai donc commencé à faire un script lequel je n'arrives pas à boucler et je dois rendre mon rapport de stage dans trois jours!!!!
    Please help me.

    voici le script:
    #modifie les chemin relatif majuscule/minuscule en minuscule
    fawk() {
    for v in `cat /basename` ; do (
    for x in `cat /listhtm` ; do (
    if [[ -f `echo $x` ]]; then
    z=`ftr`
    cat $x | sed 's/'$v'/'$z'/g' > /TEMP/temp$x && rm -rf ./$x && mv /TEMP/temp$x ./$x && rm-rf /TEMP/*
    echo $v && echo $x && echo $z
    fi )
    done )
    done
    rm -rf /list /listbis /listhtm
    }

    #modifie les majuscules en minuscules
    ftr() {
    echo "ftr_fonctionne"
    echo $v|tr 'A-Z' 'a-z'
    }

    #liste les noms de fichiers dans le répertoire courant en excluant les dossiers
    list() {
    echo list_marche!!!
    ls > /list
    for u in `cat /list` ; do
    (if [[ -f `echo $u` ]]; then
    echo $u >> /listbis
    fi)
    done
    cat /listbis | grep htm > /listhtm
    }

    #placement dans le repertoire de travail
    cd $*

    #création d'un répertoire temporaire
    mkdir /TEMP

    #génération de la liste de nom de fichier nécéssaire à la fonction awk
    ls -R $* | grep -v / > /basename && sed -i '/^$/d' /basename

    #génération de la liste de dossier à visiter (déplacement dans les répertoires)
    ls -R $* | grep / | tr -d : > /dirname
    sort -r /dirname > /dirnamebis
    cat /dirname
    cat /dirnamebis
    for d in `cat /dirnamebis` ; do
    (if [[ -d `echo $d` ]] ; then
    cd $d && fawk
    fi)
    done

    for i in `ls -R` ; do
    j=`echo $i|tr 'A-Z' 'a-z'`
    mv "$i" "$j"
    done

    rm -rf /dirnamebis
    rm -rf /basename
    rm -rf /dirname
    rm -rf /TEMP



    quelqu'un peut il m'aider?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Par défaut
    il est peut etre un peu tard.... je vais voir morphée et je passerai demain. good night

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour patomicho,

    Tu peux essayer ainsi
    - pour renommer les fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ton_Repertoire | tac | xargs rename 'y/A-Z/a-z/'
    ...
    ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    find testwww
    testwww
    testwww/abc
    testwww/abc/zYf.php
    testwww/abc/KlM.htm
    testwww/abc/zYf.htm
    testwww/abc/KlM.html
    testwww/abc/KlM.php
    testwww/abc/zYf.html
    testwww/def
    testwww/def/zYf.php
    testwww/def/KlM.htm
    testwww/def/zYf.htm
    testwww/def/KlM.html
    testwww/def/KlM.php
    testwww/def/zYf.html
     
    find testwww | tac | xargs rename 'y/A-Z/a-z/'
     
    find testwww
    testwww
    testwww/abc
    testwww/abc/zyf.html
    testwww/abc/klm.htm
    testwww/abc/zyf.htm
    testwww/abc/klm.html
    testwww/abc/zyf.php
    testwww/abc/klm.php
    testwww/def
    testwww/def/zyf.html
    testwww/def/klm.htm
    testwww/def/zyf.htm
    testwww/def/klm.html
    testwww/def/zyf.php
    testwww/def/klm.php
    puis,
    - pour mettre en minuscules les chemins dans les liens des pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ton_Repertoire -type f -iname "*.php" -o -iname "*.htm" -o -iname "*.html" -exec sed 's/href="\([^"]*\)/href="\L\1/' {} \;
    ...
    ?

    NB : prend quand même soin d'effectuer une sauvegarde du site!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Par défaut detail des sequences
    Bonjour, me revoila.

    Merci N_BaH pour tes remarques, c'est la premiére fois que je poste et tu es le premier qui me repond. Ca donne envie de coder! Le temps de me prendre un petit café et je m'y remet.
    Je vais essayer d'insérer tes propositions au codes.
    En ce qui concerne ce que j'ai fait ( et vais devoir modifier!!!) ,, le but est, dans l'ordre, de :
    - recueillir les "basename" de chaques fichiers dans l'arborescence,
    - les stocher dans un fichier "basename" à des fins de reinsertion dans une boucle for qui modifiera les chemins relatifs des fichiers .htm aprés avoir été "miniscularisé par la commande tr 'A-Z' 'a-z'
    - puis renommer au final les noms des fichiers en minuscules.
    D'écrire ces quelques lignes me fait dejà trouver des idées...
    En fait, il s'agit que je trouve le bon séquençage d'action et peut etre inséré quelques "break".
    A suivre....

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Par défaut PS pour N_BaH
    En ce qui concerne l sauvegarde du site, je travaille par sur le site lui-meme. je me suis fait une plateforme de test avec des fichiers bidons lesquelles regroupe toutes les difficultés que je pourrait rencontrer.
    Merci du conseil.
    Je suis bien content de ne pas etre seul au monde. ça motive.!!!

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Aïe, aïe, aïe... Ce que je t'ai proposé, en fait, ne fonctionne pas !

    Cela n'a pu fonctionner que parce que j'avais déjà fait des essais sans reconstruire la structure des répertoires qui devaient également contenir des majuscules, mais, je m'en aperçois en me relisant, n'en contiennent plus.

    désolé
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/10/2012, 01h18
  2. supprimer des fichiers selon leur nom
    Par qmike dans le forum VBScript
    Réponses: 3
    Dernier message: 12/06/2012, 09h28
  3. Recherche des fichiers par leurs noms
    Par hackoofr dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 26/05/2011, 12h08
  4. Réponses: 2
    Dernier message: 18/02/2010, 10h30
  5. Lire des fichiers selon leur nom
    Par guiguilelotois dans le forum LabVIEW
    Réponses: 4
    Dernier message: 18/05/2009, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo