Forum Programmation.shell Renommer tous les fichiers d'un dossier

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
18
oct.
2019

Bonjour…

je veux renommer tous les fichiers d'un dossier
par un autre nom et numéro

dossier original ==> (IPTV SPORT LINKS 18.10.2019)
Sports user-agent.m3u
bS User-Agent.m3u
Golf.m3u
Foot.m3u
IPTV List Sports (1).m3u
IPTV List Sports (2).m3u
IPTV List Sports (3).m3u
IPTV List Sports (4).m3u
IPTV List Sports (5).m3u

les fichiers que je veux créer ou le renommer
IPTVFree1
IPTVFree2
IPTVFree3
IPTVFree4
IPTVFree5
IPTVFree6
IPTVFree7
IPTVFree8
IPTVFree9

j'ai essayé avec la fonction mv mais j'ai une erreur can't rename blablabla…

  • # commande rename du paquet util-linux

    Posté par  . Évalué à 3. Dernière modification le 18 octobre 2019 à 21:59.

    Rename permet (entre autres) de faire ça

    http://man7.org/linux/man-pages/man1/rename.1.html

    en deux commandes parce que j'ai pas cherché plus

      ll
    total 0
    IPTV List Sports (1).m3u
    IPTV List Sports (2).m3u
    IPTV List Sports (3).m3u
    
    rename 'IPTV List Sports (' 'IPTVFree'  *m3u
    rename ')' ''  *m3u
    
    
     %  ls -1                                        
    IPTVFree1.m3u
    IPTVFree2.m3u
    IPTVFree3.m3u
  • # MMV est ton ami

    Posté par  . Évalué à 2.

    Salut,

    mmv peut t'aider.

    Je te laisse l'installer et lire la doc

  • # A la main

    Posté par  . Évalué à 0.

    Salut,

    S'il n'y a que 8 ou 9 fichiers, tu as plus vite fait de le faire à la main.

    Matricule 23415

    • [^] # Re: A la main

      Posté par  . Évalué à -3. Dernière modification le 18 octobre 2019 à 23:36.

      en ai fait il ya plus de 100 fichiers et je veux faire un script pour convertir un fichier m3u on userbouquet enigma2 dans ma box vu+
      j'ai crée le script la conversion mais il me faut renommer le fichier
      IPTV List Sports (5).m3u par IPTV.m3u

      le script

          #!/bin/sh
      
          F_IN=IPTV.m3u
          F_NAME=IPTVFREE
      
          F_OUT_ALL=/tmp/userbouquet.FreeIPTV.tv
          F_OUT_LD=/tmp/userbouquet.FreeIPTV_LD.tv
          F_OUT_SD=/tmp/userbouquet.FreeIPTV_SD.tv
          F_OUT_HD=/tmp/userbouquet.FreeIPTV_HD.tv
          F_OUT_RD=/tmp/userbouquet.FreeIPTV_radio.radio
      
          echo "getting remote file..."
          # get remote-file
          #wget "$R_M3U" -O $F_IN
      
          echo "parsing channel names..."
          #get channel names
          grep EXTINF $F_IN| sed -e 's/.*- //' > $F_NAME
      
          echo "reading URLs and replacing colon..."
          # read urls and replace ":"
          URLS=`grep http $F_IN | sed -e 's/:/%3a/g'`
      
          echo "go trough urls and creating bouqet..."
          # go trough urls and create bouqet
          echo "#NAME FreeIPTV ALL" > $F_OUT_ALL
          CNT=0
          for u in $URLS; do
          CNT=$(($CNT + 1))
          NAM=`head -n $CNT $F_NAME | tail -1`
          SRV=` printf "%x" $(echo $u | sed -e 's/.*//' -e 's/\l\n//')`
          echo "#SERVICE 4097:0:1:$SRV:0:0:0:0:0:0:$u:$NAM" >> $F_OUT_ALL
          sed -i "s/:#EXTINF/#DESCRIPTION/g" $F_OUT_ALL
          sed -i 's#-1,# #g' $F_OUT_ALL
          done
      
  • # .

    Posté par  . Évalué à 1.

    Qu'as-tu tenté avec la commande 'mv' ?

    Sinon je te propose ce script :

    i=1
    for f in *.m3u; do
      echo mv "`{mathjax} f" "IPTVFree`(printf "%03d" $i).m3u"
      i=$((i + 1))
    done
    

    Enlève le 'echo' quand tu es sûr que c'est bon.
    Le "%03d" va aligner le compteur sur 3 chiffres.

    • [^] # Re: .

      Posté par  . Évalué à 1. Dernière modification le 19 octobre 2019 à 15:48.

      Ca ne s'affiche pas correctement. Voici le script : https://pastebin.com/3sJqVigY

      • [^] # Re: .re

        Posté par  . Évalué à -3.

        Merci ça marche ton truc

  • # en interface graphique

    Posté par  . Évalué à -6.

    apt-get install gprename

    tellement plus simple

    • [^] # Re: en interface graphique

      Posté par  . Évalué à 0.

      Je n'ai pas compris pourquoi ce commentaire est en négatif. Cela me semble répondre au problème, non?

      • [^] # Re: en interface graphique

        Posté par  . Évalué à 3.

        Ce n'est pas le commentaire qui est en négatif, c'est le compte de cet utilisateur.

  • # avec sed

    Posté par  . Évalué à 1. Dernière modification le 28 octobre 2019 à 00:00.

    for f in IPTV*.m3u; do
      fd=$(echo $f | sed 's/ List Sports \(/Free/;s/\)//')
      mv f fd
    done
    
  • # toujours avec sed mais en plus court

    Posté par  . Évalué à 1.

    for f in IPTV*.m3u; do
      fd=$(echo $f | sed 's/ .*\(/Free/;s/\)//')
      mv f fd
    done
    

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.