#1 Le 28/04/2010, à 09: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, à 16:18)
Jav -
xubuntu
Hors ligne
#2 Le 28/04/2010, à 10: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
Dernière modification par iuchiban (Le 28/04/2010, à 10: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, à 10: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, à 11:28
- the_jav
Re : [Résolu] Script renommage automatique
Merci pour vos réponses
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, à 11:29)
Jav -
xubuntu
Hors ligne
#5 Le 28/04/2010, à 13: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, à 13:27
- roger64
Re : [Résolu] Script renommage automatique
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
Hors ligne
#7 Le 28/04/2010, à 16:18
- the_jav
Re : [Résolu] Script renommage automatique
for F in *.THM; do NOM=${F%.*} CODE=${NOM##* } [[ -e "$CODE.AVI" ]] && mv "$CODE.AVI" "$NOM.AVI" done
Merci :D
Jav -
xubuntu
Hors ligne
#8 Le 15/05/2010, à 20: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, à 01: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, à 16: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, à 10: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, à 13:35)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#12 Le 21/05/2010, à 17: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, à 17:09)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#13 Le 25/05/2010, à 15:52
- the_jav
Re : [Résolu] Script renommage automatique
nickel chrome,
merci pour tes explications :-)
Jav -
xubuntu
Hors ligne
#14 Le 18/08/2010, à 18: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, à 18: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, à 22:03
- Totor
Re : [Résolu] Script renommage automatique
je pense que c'est lié à ta signature changeante.
-- Lucid Lynx --
Hors ligne
#17 Le 18/08/2010, à 23:06
- sputnick
Re : [Résolu] Script renommage automatique
Ha ok !
Bien vu Totor
@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