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

Shell et commandes GNU Discussion :

while read, fermer un fichier ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut while read, fermer un fichier ?
    Bonjour,

    Je souhaiterai exporter la commande find dans un fichier 'tmp', puis utiliser ce fichier dans la fonction renomme()

    Voici le script avec lecture du fichier 'tmp' :

    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
    #!/bin/bash
     
    # Comment exécuter le script
    # ./renom2 REPERTOIRE
     
    # A compléter si nécessaire
    caracteres_avant="àâäçéèêëîïôöùüûÂÇÉÈÊËÎÏÔÖÙÜÛ "
    caracteres_apres="aaaceeeeiioouuuACEEEEIIOOUUU_"
     
    #renomme si un "caracteres_avant" est présent
    function renomme()
    {
    	while read chemin; do 
    		echo "dans le répertoire : " $chemin
    		cd "$chemin"
    		for i in * ; do
    			if  [[ $i == *[$caracteres_avant]* ]] ; then
    				echo "renomme : "
    				mv -v "$i" `echo $i | tr "$caracteres_avant" "$caracteres_apres"` ;
    			fi
    		done
    	done < /home/utilisateur/Desktop/script/tmp
    }
     
    #liste les répertoires dans l'ordre décroissant
    {
    	find $1 -type d | sort -r > tmp
    } | renomme
    Correction :
    Je pensais que la syntaxe était mauvaise, mais ce n'est pas le cas, ce script fonctionne aléatoirement... Pensez-vous que c'est lié à l'ouverture du fichier, faut-il le fermer ?

    Merci d'avance

  2. #2
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    Euh... enlève le pipe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    find $1 -type d | sort -r > tmp
    renomme
    Ca ne marche pas mieux comme ça ?


    Mais pourquoi ne pas garder la première version ? Ca me semble plus propre que de passer par un fichier temporaire.

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut
    J'ai trouvé juste avant que tu postes le message

    Je ne garde pas la première version car il y a énormément de fichiers à renommer et ça rique de saturer la mémoire

    C'est effectivement le pipe qui dérange, d'ailleurs j'ai supprimé la fonction :

    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
    #!/bin/bash
     
    # Comment exécuter le script
    # ./renom2 REPERTOIRE
     
    # A compléter si nécessaire
    caracteres_avant="àâäçéèêëîïôöùüûÂÇÉÈÊËÎÏÔÖÙÜÛ "
    caracteres_apres="aaaceeeeiioouuuACEEEEIIOOUUU_"
     
     
    find $1 -type d | sort -r > tmp
    while read chemin; do 
    	echo "dans le répertoire : " $chemin
    	cd "$chemin"
    	for i in * ; do
    		if  [[ $i == *[$caracteres_avant]* ]] ; then
    			echo "renomme : "
    			mv -v "$i" `echo $i | tr "$caracteres_avant" "$caracteres_apres"` ;
    		fi
    	done
    done < /home/utilisateur/Desktop/script/tmp
    Merci

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

Discussions similaires

  1. Traitement fichier par while read
    Par ybebert dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 26/05/2014, 12h09
  2. while read d'un fichier
    Par falcon dans le forum Unix
    Réponses: 4
    Dernier message: 18/02/2010, 14h41
  3. while read fichier en paramètre
    Par pinocchio dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 06/08/2008, 21h21
  4. comment fermer un fichier Excel depuis Access?
    Par audrey_desgres dans le forum Access
    Réponses: 14
    Dernier message: 21/06/2005, 12h43
  5. Boucle while & read
    Par gibet_b dans le forum Linux
    Réponses: 4
    Dernier message: 29/04/2005, 15h38

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