Renommer plusieurs fichiers en bash

Résolu
Bonjour,
J'ai un dossier qui contient plusieurs fichiers texte.
popo.txt
lulu.txt
titi.txt

Je voulais renommer les fichiers en
doc1.txt
doc2.txt
doc3.txt


Je pense avec
rename
et une boucle mais je n'arrive pas à la structurer

Merci de votre aide :)

3 réponses

  1. Modérateur
    Bonjour,

    Il faut itérer sur les fichiers de ton dossier en récupérant le résultat de la commande
    find
    . Au cours de cette itération, tu incrémentes un compteur qui te permettra de construire le nom des fichiers cibles. Puis tu fais le renommage avec
    rename
    ou
    mv
    .

    Le mieux est d'écrire un petit script (e.g.
    script.sh
    )

    #!/bin/bash
    i=0
    for f in $(find $1 | grep "txt$"); do 
        dir=$(dirname "$f")
        mv "$f" "$dir/doc$i.txt"
        i=$(($i+1))
    done


    On sauve, on quitte et depuis un terminal, on rend le script exécutable, et on prépare un petit test :
    chmod a+x script.sh
    mkdir -p toto
    touch toto/popo.txt toto/lulu.txt toto/titi.txt


    ... et on lance le script :

    (mando@silk) (~) $ ls toto/
    lulu.txt popo.txt titi.txt
    (mando@silk) (~) $ ./script.sh toto/
    (mando@silk) (~) $ ls toto/
    doc0.txt doc1.txt doc2.txt


    Bonne chance
    2
    1. Un grand merci à toi pour ta réponse rapide et complète ça fonctionne parfaitement merci beaucoup
      0
    2. Modérateur
      @JeremyprogParfait, bonne continuation :-)
      0
  2. Contributeur
    hello
    enlever le -n si c'est ok
    $ rename -n 's/.+/our $i; sprintf("doc%d.txt", 1+$i++)/e' *.txt
    rename(lulu.txt, doc1.txt)
    rename(popo.txt, doc2.txt)
    rename(titi.txt, doc3.txt)
    1
    1. Très intéressant en une seule ligne de commande Merci beaucoup ca fonctionne parfaitement :)
      0

      Discussions similaires

      question pix mot caché

      7 réponses