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 :

extraire l'extension d'un fichier avec la commande find


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut extraire l'extension d'un fichier avec la commande find
    Bonjour à tous.

    Je cherche à faire un script qui me converti tous les fichiers .txt d'un répertoire en UTF8.
    Je pense atteindre le but avec cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name *.txt -exec iconv -f iso-8859-1 -t UTF-8 {} \;
    il me reste en fait à rediriger ce que me renvoie la commande iconv dans un fichier.
    J'aimerais que ce fichier aie le même nom que l'original mais pas la même extension.
    Comment dois-je m'y prendre ?

    Merci d'avance pour votre aide.

  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,

    Sans rentrer dans des opérations trop complexes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name *.txt -exec iconv -f iso-8859-1 -t UTF-8 {} -o {}.UTF-8 \;
    Devrait déjà te permettre d'identifier les 2 versions, non ?


  3. #3
    Nouveau membre du Club
    Profil pro
    Développeur
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    ah ben oui ça va déjà bien m'aider.
    J'aurais préféré ne pas avoir 2 extensions pour la copie, mais le principal c'est que ça fonctionne.

    Merci bien!

  4. #4
    Membre expérimenté Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Par défaut
    Pour ça tu peux faire un mini script sh.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > cat foo
    #!/bin/sh
     
    iconv -f iso-8859-1 -t UTF-8 "$1" >"${1%.*}.utf8"
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name *.txt -exec foo {} \;
    Ou en one-liner mais sans find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for F in *.txt; do iconv -f iso-8859-1 -t UTF-8 "$F" >"${F%.*}.utf8"; done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for F in *.txt; do iconv -f iso-8859-1 -t UTF-8 "$F" -o "${F%.*}.utf8"; done

  5. #5
    Nouveau membre du Club
    Profil pro
    Développeur
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    Parfait!

    j'ai mon script qui fonctionne à merveille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /bin/sh
     
    TXTPATH="${SRCROOT}/assets/Pages"
    TXT_EXT='*.txt'
    for f in $(find $TXTPATH -name $TXT_EXT); do
       iconv -f iso-8859-1 -t UTF-8 "$f" > "${f%.*}.utf8"
    done
    Merci à vous deux !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 723
    Par défaut
    restons

    ON NE FAIT PAS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for item in $(commande)
    car si un élément retourné par commande comporte un des caractères de l'IFS, chaque partie de cet élément sera considéré comme un élément à part.

    Soit on utilise le Développement des chemins (cf. man bash) de l'interpréteur de commande,
    soit on utilise l'option-commande -exec de la commande find.

Discussions similaires

  1. Extraire l'extension d'un fichier
    Par francoisch dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 25/01/2011, 10h39
  2. Extraire des valeurs d'un fichier avec AWK
    Par Maillon dans le forum Linux
    Réponses: 2
    Dernier message: 05/02/2009, 23h49
  3. Extraire l'extension d'un fichier
    Par Coroebus dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/11/2007, 14h35
  4. extraire le contenu d'un fichier avec perl
    Par titexe dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2006, 16h21
  5. Extraire une extension d'un fichier
    Par Flow_75 dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/10/2006, 13h12

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