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 :

Renommer Fichier Bash


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2017
    Messages : 15
    Par défaut Renommer Fichier Bash
    Bonjour à tous,

    Je cherche à réaliser un script en bash pour renommer en masse des fichiers dans un répertoire.
    C'est la première fois que je réalise un script schell et voilà ce que j'aimerai réaliser:

    j'ai un fichier au format : HEALTHY_CATFLUI_MONGODB_FLUIDE_2017-09-13_09-48-50.csv

    J'aimerais obtenir : HEALTHY_CATFLUI_MONGODB_FLUIDE_20170913_0948_50.csv


    avec rename
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ./ -depth -name "*-*"  -exec rename 's/-//g' "{}" \;
    J'arrive à obtenir ça:

    HEALTHY_CATFLUI_MONGODB_FLUIDE_20170913_094850.csv

    Mon problème est d'arriver à séparer les deux derniers chiffres du reste ( Dans l'exemple: "50" qui représente les secondes ) par un underscore

    En gros je cherche un équivalent à la commande explode en bash de manière à pouvoir découper mon nom de fichier et pouvoir agir sur ces deux derniers chiffres, est ce possible à votre avis ?

    merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Bonjour,
    Essayer comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    find ./ -depth -name "*-*" -exec bash -c 'for i do j="${i%%-*}";\
    k="${i#${i%%-*}}";l="${k%-*}";m="${l//-/}";\
    n="${k#${l}-}";echo mv "$i" "$j${m}_$n";done' bash {} +
    Cordialement.

  3. #3
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo "${A}"
    HEALTHY_CATFLUI_MONGODB_FLUIDE_2017-09-13_09-48-50.csv
     
    $ echo "${A}" | sed -r 's/(.*)-(.*)/\1_\2/;s/-//g'
    HEALTHY_CATFLUI_MONGODB_FLUIDE_20170913_0948_50.csv

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    avec awk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F'-' '{print $1$2$3$4"_"$5}'

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 339
    Par défaut
    Bonjour,
    Pour la version de rename proposer, la regex est 's/(\d{4})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2}.csv)/$1$2$3_$4$5_$6/'.
    Pour information, ici on est sur une syntaxe perl.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2017
    Messages : 15
    Par défaut
    Merci à tous ca fonctionne parfaitement comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $ find . -depth -name "*-*" -exec rename -n 's/-(..)-(.....)-(..)-/$1$2$3_/' "{}" \;

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

Discussions similaires

  1. [javascript] Renommer fichier au téléchargement
    Par lolo_ici_et_la dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/11/2006, 14h49
  2. [VBA-E]Déplacer/Renommer fichier excel
    Par wanou44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/02/2006, 16h01
  3. [DOS] renommer fichiers.aaa.bbb en fichiers.bbb
    Par Axiome dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 10/12/2005, 23h29
  4. Renommer fichiers
    Par twartel dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/03/2005, 08h40

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