Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/04/2010, à 10:55

the_jav

[Résolu] Script renommage automatique

Bonjour à tous !!

Je fais appel à vous car je ne m'en sort vraiment pas avec les scripts.
Je souhaite automatiser une opération qui est pelante à faire ... j'explique :

Dans un répertoire, j'ai (entre autre) un fichier «nom_du_fichier - CODE.THM» et un fichier «CODE.AVI».
Je souhaite renommer le fichier «CODE.AVI» en «nom_du_fichier - CODE.AVI».
Et faire cette opération pour toutes les paires de fichiers (THM - AVI) qui ont le même «CODE» du répertoire.

Et je ne sais pas du tout comment faire....

Quelqu'un pour m'aider ? :-)

D'avance merci !!!

Dernière modification par the_jav (Le 28/04/2010, à 17:18)


Jav -
xubuntu

Hors ligne

#2 Le 28/04/2010, à 11:38

iuchiban

Re : [Résolu] Script renommage automatique

for F in $(ls *.THM)
do
NOM=$(echo $F| cut -d" " -f1)
CODE=$(echo $F | awk '{print $NF}' | cut -d"." -f1)
if [[ -e "$CODE.AVI" ]]
then
  mv "$CODE.AVI" "$NOM - $CODE.AVI"
fi
done

/!\ Ca ne marche que si les noms de fichiers n'ont pas d'espace /!\
En gros, ca devrait le faire smile

Dernière modification par iuchiban (Le 28/04/2010, à 11:39)


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#3 Le 28/04/2010, à 11:59

roger64

Re : [Résolu] Script renommage automatique

Tu as aussi un logiciel avec une interface graphique assez simple que j'utilise à l'occasion: gprename
Il existe en deb mais je ne me rappelle plus avec quel dépôt.

Il suffit de déposer les fichiers à renommer dans un dossier, de le régler et de le lancer.

Hors ligne

#4 Le 28/04/2010, à 12:28

the_jav

Re : [Résolu] Script renommage automatique

Merci pour vos réponses smile

roger64, je préfère la ligne de commande pour une tâche si simple :-)

iuchiban, j'ai un peu testé ton code. Merci beaucoup, c'est très proche de ce que je souhaite.
J'ai donc un peu chipoté et je pense avoir résolu le problème des espaces (car mes «nom_du_fichie» contiennent souvent des espaces) ! Voici ce que j'ai :

#! /bin/bash
for F in *.THM
do
NOM=$(echo $F| cut -d"." -f1)
CODE=$(echo $F | awk '{print $NF}' | cut -d"." -f1)

if [[ -e "$CODE.AVI" ]]
then
  mv "$CODE.AVI" "$NOM.AVI"
fi
done

Il reste un léger problème si le «nom_du_fichier» contient un point ...
quelqu'un a une idée ??

Dernière modification par the_jav (Le 28/04/2010, à 12:29)


Jav -
xubuntu

Hors ligne

#5 Le 28/04/2010, à 14:19

sputnick

Re : [Résolu] Script renommage automatique

for F in *.THM; do
    NOM=${F%.*} CODE=${NOM##* }

    [[ -e "$CODE.AVI" ]] && mv "$CODE.AVI" "$NOM.AVI"
done

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#6 Le 28/04/2010, à 14:27

roger64

Re : [Résolu] Script renommage automatique

the_jav a écrit :

roger64, je préfère la ligne de commande pour une tâche si simple :-)

Rah...j'avais pas fait attention au nom du forum. Amusez-vous bien tongue

Hors ligne

#7 Le 28/04/2010, à 17:18

the_jav

Re : [Résolu] Script renommage automatique

sputnick a écrit :
for F in *.THM; do
    NOM=${F%.*} CODE=${NOM##* }

    [[ -e "$CODE.AVI" ]] && mv "$CODE.AVI" "$NOM.AVI"
done

Merci big_smile:D


Jav -
xubuntu

Hors ligne

#8 Le 15/05/2010, à 21:59

the_jav

Re : [Résolu] Script renommage automatique

Bon, en fait il ce fait que dans certains cas le CODE se trouve avant le reste du nom
ce qui fait que le dernier script proposé de ne fonctionne pas.
Comme je ne comprends pas toutes les subtilités utilisées, je n'arrive pas à le modifier pour que ça marche. Quelqu'un saurait-il m'aider ?
d'avance merci

Jav


Jav -
xubuntu

Hors ligne

#9 Le 18/05/2010, à 02:53

sputnick

Re : [Résolu] Script renommage automatique

Donnes des exemples concrets avec la sortie d'erreur.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#10 Le 18/05/2010, à 17:45

the_jav

Re : [Résolu] Script renommage automatique

ben logiquement il ne fait pas d'erreur, puisqu'il associe le dernier "mot" du nom comme étant le CODE et qu'il ne sait juste pas l'associer avec un autre fichier.


Jav -
xubuntu

Hors ligne

#11 Le 21/05/2010, à 11:39

Postmortem

Re : [Résolu] Script renommage automatique

Salut !

$ ls -1
04730.AVI
07398770 - kjghfjh.jkhf zkjh.THM
07398770.AVI
098674E26.AVI
65465 54552.AVI
986789680.AVI
98736 - hgfhj .kiugfi.THM
98736.AVI
ghzfdk kjzfy - 04730.THM
hfkjhzfh . ezjhg - 986789680.THM
jhgfhjaerf - 65465 54552.THM
jkhgfhafh - 098674E26.THM
ls -1 *.AVI > list.tmp
while read fic_avi
do
      CODE="${fic_avi%.AVI}"
      fic_thm="$(ls *"${CODE}"*.THM)"
      new_avi="${fic_thm%.THM}.AVI"
      mv "$fic_avi" "$new_avi"
done < list.tmp
rm list.tmp
$ ls -1
07398770 - kjghfjh.jkhf zkjh.AVI
07398770 - kjghfjh.jkhf zkjh.THM
98736 - hgfhj .kiugfi.AVI
98736 - hgfhj .kiugfi.THM
ghzfdk kjzfy - 04730.AVI
ghzfdk kjzfy - 04730.THM
hfkjhzfh . ezjhg - 986789680.AVI
hfkjhzfh . ezjhg - 986789680.THM
jhgfhjaerf - 65465 54552.AVI
jhgfhjaerf - 65465 54552.THM
jkhgfhafh - 098674E26.AVI
jkhgfhafh - 098674E26.THM

Dernière modification par Postmortem (Le 21/05/2010, à 14:35)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#12 Le 21/05/2010, à 18:05

Postmortem

Re : [Résolu] Script renommage automatique

Quelques explications :

Liste les fichiers *.AVI dans list.tmp (le '-1' était pour avoir la liste des fichiers sur une seule colonne mais apparement, il n'est pas nécessaire lorsque l'on fait une redirection) :

ls -1 *.AVI > list.tmp

Le programme entre 'do' et 'done' est exécuté une fois pour chaque ligne du fichier fic.tmp ; la ligne en question est affectée à la variable 'fic_avi' :

while read fic_avi
do
     programme
done < list.tmp

On retire '.AVI' à la fin de la variable 'fic_avi' ; on affecte le résultat à la variable 'CODE' :

CODE="${fic_avi%.AVI}"

On cherche le fichier '*.THM' qui contient la valeur de la variable 'CODE' dans son nom ; on affecte le résultat à la variable 'fic_thm' :

fic_thm="$(ls *"${CODE}"*.THM)"

On enlève le '.THM' à la fin de la variable 'fic_thm' et on y ajoute le '.AVI' ; le résultat étant affecté à la variable 'new_avi' :

new_avi="${fic_thm%.THM}.AVI"

Dernière modification par Postmortem (Le 21/05/2010, à 18:09)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#13 Le 25/05/2010, à 16:52

the_jav

Re : [Résolu] Script renommage automatique

nickel chrome,
merci pour tes explications :-)


Jav -
xubuntu

Hors ligne

#14 Le 18/08/2010, à 19:24

pbout340

Re : [Résolu] Script renommage automatique

sputnik ! t'aurais pas du enlever

- En fait voluptueuse c'est une façon polie de dire grasse
- Heu si on veut, pourquoi ?
- C'est décidé, les rendez-vous par petites annonces, j'arrête ...

J'fais comment maintenant ? j'voulais montrer ça à Jimmy.


réflexe conditionnable : il y a, en haut de cette page, à gauche, un petit book cliquable.

Hors ligne

#15 Le 18/08/2010, à 19:52

sputnick

Re : [Résolu] Script renommage automatique

oO

wut ?
Qé ?
Vas ?
WTF ?


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#16 Le 18/08/2010, à 23:03

Totor

Re : [Résolu] Script renommage automatique

je pense que c'est lié à ta signature changeante.


-- Lucid Lynx --

Hors ligne

#17 Le 19/08/2010, à 00:06

sputnick

Re : [Résolu] Script renommage automatique

Ha ok !

Bien vu Totor wink

@pbout340, tu trouvera la quote ici : http://danstonchat.com/5371.html c'est sur ce site d'où provient mes signatures aléatoires. ( en ce moment, elles changent toutes les 15 minutes ).


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne