Renommage de séries en masse

Bonjour,

Je souhaiterais renommer en masse des fichiers.

J'ai donc un dossier Slides qui contient le titre de la présentation (formaté par mes soins sous la forme PresentationSecurite par exemple). Chaque dossier contient Seminaire01, Seminaire02, etc...

Presentations
|___PresentationSecurite
|___Seminaire01
|___Fichier1
|___Fichier2
|___Fichier3
|___Seminaire02
|___Fichier1
|___Fichier2
|___Fichier3
|___PresentationInformatique
|___Seminaire01
|___Fichier1
|___Fichier2
|___Fichier3
|___Seminaire02
|___Fichier1
|___Fichier2
|___Fichier3
...

Les fichiers sont par contre dans un bordel monstrueux.

Est-il possible d'extraire le nom de la présentation à partir du dossier (PresentationSecurite par exemple), le numéro de la présentation (Seminaire01) à partir du dossier aussi, et d'extraire le numéro du fichier à partir du nom du fichier (chaque nom de fichier contient p1s3 pour le troisième fichier du séminaire 01 par exemple), pour le renommer sous la forme :

NomPresentation-Seminaire01-Fichier03.ppt

J'ai un poste sous Windows et deux sous Linux, les deux types de scripts sont donc possibles.

Merci !

3 réponses

  1. Bonsoir,
    Je répond pour Windows, ou c'est possible... par contre, je ne suis pas sûr d'avoir compris l'arborescence.
    Avant
    PresentationSecurite (dossier)
       |___Seminaire01 (sous-dossier)
                   |___Fichier_ppt_p1s3.ppt (fichier à renommer)

    Après
    PresentationSecurite
       |___ Seminaire01
                   |___ PresentationSecurite-Seminaire01-Fichier03.ppt


    Est-ce ça ?

    @+
    0
    1. Contributeur
      Salut,

      Un exemple sous GNU/Linux :
      $ tree
      .
      '-- PresentationSecurite
          |-- Seminaire01
          |   |-- fichier1
          |   |-- fichier2
          |   |-- fichier3
          |   '-- fichier4
          |-- Seminaire02
          |   |-- fichier1
          |   |-- fichier2
          |   |-- fichier3
          |   '-- fichier4
          |-- Seminaire03
          |   |-- fichier1
          |   |-- fichier2
          |   |-- fichier3
          |   '-- fichier4
          |-- Seminaire04
          |   |-- fichier1
          |   |-- fichier2
          |   |-- fichier3
          |   '-- fichier4
          '-- Seminaire05
              |-- fichier1
              |-- fichier2
              |-- fichier3
              '-- fichier4
      
      6 directories, 20 files
      
      $ find PresentationSecurite -type f -exec bash -c \
      'name=$(basename $1); dir=$(dirname $1);                            
      mv $1 ${dir}/${dir/\//-}-${name}' _ {} \;      
                           
      $ tree
      .                        
      '-- PresentationSecurite 
          |-- Seminaire01      
          |   |-- PresentationSecurite-Seminaire01-fichier1
          |   |-- PresentationSecurite-Seminaire01-fichier2
          |   |-- PresentationSecurite-Seminaire01-fichier3
          |   '-- PresentationSecurite-Seminaire01-fichier4
          |-- Seminaire02
          |   |-- PresentationSecurite-Seminaire02-fichier1
          |   |-- PresentationSecurite-Seminaire02-fichier2
          |   |-- PresentationSecurite-Seminaire02-fichier3
          |   '-- PresentationSecurite-Seminaire02-fichier4
          |-- Seminaire03
          |   |-- PresentationSecurite-Seminaire03-fichier1
          |   |-- PresentationSecurite-Seminaire03-fichier2
          |   |-- PresentationSecurite-Seminaire03-fichier3
          |   '-- PresentationSecurite-Seminaire03-fichier4
          |-- Seminaire04
          |   |-- PresentationSecurite-Seminaire04-fichier1
          |   |-- PresentationSecurite-Seminaire04-fichier2
          |   |-- PresentationSecurite-Seminaire04-fichier3
          |   '-- PresentationSecurite-Seminaire04-fichier4
          '-- Seminaire05
              |-- PresentationSecurite-Seminaire05-fichier1
              |-- PresentationSecurite-Seminaire05-fichier2
              |-- PresentationSecurite-Seminaire05-fichier3
              '-- PresentationSecurite-Seminaire05-fichier4
      
      6 directories, 20 files
      
      $

      ;-))
      0