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 :

Exclure des éléments dans un traitement de fichiers


Sujet :

Linux

Vue hybride

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 107
    Par défaut Exclure des éléments dans un traitement de fichiers
    Bonjour

    Je souhaite exclure des fichiers et dossiers de mon traitement, voici mon code :
    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
     
    fichier_exclure=`cat '/var/www/localhost/mon/chemin/mon_dossier/elements_a_exclure.txt'`
     
    # si on trouve une virgule dans le fichier alors on separe les elements dans un tableau
    old="$IFS"
    IFS=,
    set $fichier_exclure
    IFS="$old"
     
    for exclure in "$@"
    do
     
    	if echo "$i" |grep $exclure >/dev/null 2>&1
    	then 
    		echo ""	
    	else
                    # traitement
           fi
    done
    Seulement ça ne semble pas fonctionner, car tous les fichiers sont traités, au lieu d'exclure ceux qui sont dans elements_a_exclure.txt. Voici comment j'ai écrit dans ce dernier :
    jquery,*.css,*.ini,*.jpg,*.png,*.gif,*.sql,*.swf,*.pdf

    Y a t il une erreur dans le code ou dans elements_a_exclure.txt ? J'ai oublié quelque chose ?

    Cordialement,
    Ginger

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    D'où elle sort cette variable ???

    A mon avis tu t'y prends très mal pour faire ta sauce

    Quand on saura ce que représente "$i", on pourra sûrement t'en dire plus...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 107
    Par défaut
    J'ai juste pas mis tout le code :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #!/bin/sh
     
    # je reçois en parametre le dossier à traiter
    tabdossier=$*
    for d in $tabdossier
    do
            tmp=${d%/*}
    	tmp=${tmp##*/}
    	explorer=`find $d -name "*.*"`
    	if [[ $explorer = "" ]]
    	then
    		echo "<br /><b>Le dossier $tmp ne possède pas de fichiers. </b><br />"
    	else
    		echo "<br /><b>Dossier $tmp en cours de traitement ... </b><br />"
    	fi
     
    	for i in $explorer
    	do
                    tmp2=${i#*$tmp}
    		tmp3=${tmp2#/}
     
                    # on recupere les elements a exclure
                    fichier_exclure=`cat '/var/www/localhost/mon/chemin/mon_dossier/elements_a_exclure.txt'`
     
                    # si on trouve une virgule dans le fichier alors on separe les elements dans un tableau
                    old="$IFS"
                    IFS=,
                    set $fichier_exclure
                    IFS="$old"
     
                    for exclure in "$@"
                    do
     
    	                if echo "$i" |grep $exclure >/dev/null 2>&1
    	                then 
    		                echo ""	
    	                else
                                   # traitement
                            fi
                  done
            done
    done
    exit 0;

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Quel est le but exact de ton script, à part celui d'exclure certains fichiers du traitement ?

    Parce que un simple grep récursif en excluant les motifs souhaités devrait faire l'affaire...

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

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

    il est possible d'utiliser sed pour convertir le contenu du fichier (elements...txt) en une 'regex compatible' avec ce que peut comprendre find;
    passer cette 'regex compatible' à find pour qu'il fasse exécuter le «Traitement».
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 107
    Par défaut
    Salut

    Merci pour vos réponses

    @zipe31 : je regardes comment faire en grep

    @N_BaH : je ne comprend pas ce que tu veux dire

    Et si je fais quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # je remplace cette ligne : 
    # explorer=`find $d -name "*.*"`
     
    # Par exemple : exclure les fichiers dont l'extension est jpg
    explorer=`find . ! -name "*.jpg"`
    Mais comment exclure plusieurs fichiers en même temps ainsi que des dossiers également ? (d'où l(intérêt de stocker les éléments à exclure dans un fichier à part, on peut en rajouter facilement de cette manière...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] Ajouter des éléments dans un fichier XML
    Par pitchu dans le forum Format d'échange (XML, JSON...)
    Réponses: 14
    Dernier message: 25/12/2015, 10h06
  2. Réponses: 6
    Dernier message: 17/11/2013, 20h32
  3. Réponses: 0
    Dernier message: 27/08/2012, 11h21
  4. [Encodage] Un classique : prendre des éléments dans un fichier texte
    Par DkA59 dans le forum Langage
    Réponses: 13
    Dernier message: 02/04/2011, 15h17
  5. [swing] disposition des éléments dans un GridLayout
    Par al85 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 11/02/2005, 17h36

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