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 :

Bash / shell


Sujet :

Linux

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Par défaut Bash / shell
    bien le bonjour.
    Voila je travail actuellement sur un shell (sous debian 5), qui fait tout un tas d'opération, et la je bloque.
    Ma mission si je l'accepte est de copier tout les fichier d'un répertoire en tronquant leur nom : les fichier txt et pdf sont de la forme :
    rtry5456jhll4_h558jhg48hgjk5.txt
    je voudrais récupérer la première partie du nom du fichier jusqu'au '_' pour le renommer et le copier.

    bon j'avoue que linux c'est pas mon fort ^^ en C je peux faire ca rapido mais en shell : p

  2. #2
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par le_fif Voir le message
    bien le bonjour.
    Voila je travail actuellement sur un shell (sous debian 5), qui fait tout un tas d'opération, et la je bloque.
    Ma mission si je l'accepte est de copier tout les fichier d'un répertoire en tronquant leur nom : les fichier txt et pdf sont de la forme :
    rtry5456jhll4_h558jhg48hgjk5.txt
    je voudrais récupérer la première partie du nom du fichier jusqu'au '_' pour le renommer et le copier.

    bon j'avoue que linux c'est pas mon fort ^^ en C je peux faire ca rapido mais en shell : p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo ton_fichier | cut -d "_" -f1

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Par défaut
    merci pour la réponse mais echo ton_fichier | cut -d "_" -f1
    va prendre la première ligne du fichier txt, or je voudrais changer le nom lui même du fichier.

  4. #4
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par le_fif Voir le message
    merci pour la réponse mais echo ton_fichier | cut -d "_" -f1
    va prendre la première ligne du fichier txt, or je voudrais changer le nom lui même du fichier.
    Negatif. La commande echo prend un arg et affiche cet argument sur le terminal.
    Petite demo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    2401939@ari-31-308-04:/users/nfs/Etu9/2401939$ cat toto_titi_tata.txt 
    toto
    titi
    tata
    2401939@ari-31-308-04:/users/nfs/Etu9/2401939$ echo toto_titi_tata.txt | cut -d "_" -f1
    toto

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Par défaut
    oui enfin je voulais dire, que la commande va chercher dans le fichier text alors que je voudrais faire l'opération sur le nom du fichier : p

    edit : ca serait plutôt quelque chose comme ca :
    for i in $(ls *.txt)
    do
    mv -v $i ${i%%_*}*_
    done

    (c'est un début d'une vage idée ^^)

  6. #6
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par le_fif Voir le message
    oui enfin je voulais dire, que la commande va chercher dans le fichier text alors que je voudrais faire l'opération sur le nom du fichier : p

    edit : ca serait plutôt quelque chose comme ca :
    for i in $(ls *.txt)
    do
    mv -v $i ${i%%_*}*_
    done

    (c'est un début d'une vage idée ^^)
    Bah, si tu veux tu peux protéger par des backquotes le nom de ton fichier. `nom_du_fichier`. Mais je doute de ce que tu dis qd meme.

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par le_fif Voir le message
    oui enfin je voulais dire, que la commande va chercher dans le fichier text alors que je voudrais faire l'opération sur le nom du fichier : p

    edit : ca serait plutôt quelque chose comme ca :
    for i in $(ls *.txt)
    do
    mv -v $i ${i%%_*}*_
    done

    (c'est un début d'une vage idée ^^)
    tout avant le premier _
    tout après le premier _

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Par défaut
    yop (dsl de répondre tard ^^' )

    en fait j'essaye de faire un bash qui dans un repertoire, me transforme des fichiers sous la forme f4f6z4f65ze4f6_f4ze56f4fze6.txt et f4f6z4f65ze4f6_f4ze56f4fze6.pdf en :
    f4f6z4f65ze4f6.txt
    et f4f6z4f65ze4f6.pdf

    j'ai essayé quelque commande avec mv et rename mais, je n'arrive pas à le faire totalement.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 640
    Par défaut
    Soit... mais où en es-tu de ton script ? Ça commençait pourtant bien, entre ce que tu as écrit et les précisions apportées par JeitEmgie, tu aurais dû y arriver...

    mais sans ton script...?

    Éventuellement, donnes nous un exemple significatif (par un ls) des fichiers que tu veux traiter, et le résultat que tu souhaites obtenir, et ton script.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Par défaut
    (je le redis mais je débute en shell !)

    ls -l
    total 44

    -rw-r--r-- 1 toto toto 4571 oct 14 11:00 09071310013_20090713124337.txt
    -rw-r--r-- 1 toto toto 5651 oct 14 11:00 09071610054_20090716121128.txt

    j'ai test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mv -v 09071110144_20090711171858.txt ${i%_*}*_${i#*_}
    ca me renome le fichier 09071110144_20090711171858.txt en *_
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in $(ls *.txt)
    do
         mv -v $i ${i#*_}
    done
    ca me suprime la partie avant le _ (et le _) j'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in $(ls *.txt)
    do
         mv -v $i ${i%_*}.txt
    done
    me transforme 09071310013_20090713124337.txt en :
    09071310013.txt
    youpi ! ^^
    merci à tous

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 640
    Par défaut
    youpi!

    pour les fichiers txt seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in *.txt
    do
         mv -v $i ${i%_*}.txt
    done
    pour les fichiers txt et pdf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in *.{txt,pdf}
    do
         mv -v $i ${i%_*}.${i##.*}
    done
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Un p'tit rename, ça marche bien aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rename 's/_.*\./\./g' *.{txt,pdf}

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

Discussions similaires

  1. Qualimétrie Bash Shell
    Par hervia dans le forum Qualimétrie
    Réponses: 0
    Dernier message: 13/11/2013, 12h31
  2. [bash/shell] Exécuter un fichier .exe
    Par Boujoute dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 08/06/2011, 07h21
  3. Questions sur le shell Bash
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 07/09/2006, 18h19
  4. Utiliser les commandes du shell bash
    Par man in the hill dans le forum Linux
    Réponses: 3
    Dernier message: 20/07/2006, 10h43
  5. Bash / shell size demarrage
    Par niconeo dans le forum Linux
    Réponses: 4
    Dernier message: 03/05/2006, 17h27

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