Salut,
J'ai écrit un tout petit script simple mais pas si efficace pour renommer mes vidéos selon plusieurs critères :
#!/bin/bash
#Nom donné aux vidéos
read -p "Nom des vidéos : " nom
#Numéro des vidéos
num=1
for file in *.mp4
do
date=$(mediainfo "$file" | grep date | head -n 1 | cut -b 48-57)
time=$(mediainfo "$file" | grep date | head -n 1 | cut -c 59-66)
newname="`{mathjax} {date} (`{time}) - `{mathjax} {nom} - `{num}.mp4"
mv -v "$file" "$newname"
((num++))
done
- La date et l'heure en premier
- Le nom des vidéos (c'est un nom arbitraire que je choisis au lancement du script)
- Le numéro de la vidéo dans la liste
Ça donne des noms de ce style :
2023-03-28 (14:32:11) - Anniversaire de Youmna - 1.mp4
2023-03-28 (14:48:20) - Anniversaire de Youmna - 2.mp4
2023-03-28 (15:52:03) - Anniversaire de Youmna - 3.mp4
J'ai un souci cependant…La numération est juste seulement si les fichiers étaient déjà dans l'ordre chronologique avant le traitement. Selon les noms, ils peuvent néanmoins être traités dans le désordre, ce qui donnerait un classement A-Z juste dans le gestionnaire de fichiers malgré tout (grâce aux dates et horaires) mais faux dans le nombre qui est attribué à chaque fichier. Je n'ai pas trouvé de solution simple pour résoudre le problème, si ce n'est lancer le script deux fois. Auriez-vous des suggestions s'il vous plaît ?
# Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Solution brutale & quelques trucs
Posté par Stinouff . Évalué à 2.
C'est ce que je fais présentement, comme je le dis plus haut, je lance deux fois le script ! ^
Les noms de mes fichiers sont formatés très simplement.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Solution brutale & quelques trucs
Posté par ml . Évalué à 3.
La commande
find
est utilisée parfois pour protéger les noms de fichiers (-print0
), etls
aussi avec l’option qui permet d’échapper les caractères spéciaux en sortie. On peut aussi regarder du côté de la variable shellIFS
et les options de la commanderead
(-d
en bash ?).Mais je dois dire que je prends toujours soin d’utiliser des noms de fichiers pas trop emmerdants… pour pas avoir à trop me prendre la tête avec ça.
Pour en revenir à la problématique initiale. Faut faire une boucle qui sort l’horodatage et le nom du fichier source dans un fichier temporaire. En pseudo-script shell :
Si t’es motivé tu peux chaîner aussi les boucles
while
oufor
à travers des pipe, pour ne pas avoir à créer un fichier temporaire^^
:Mets ton nom de fichier en fin de ligne, comme ça la présence d’espaces dedans sera plus simple à gérer au besoin.
S’arranger pour que l’horodatage soit dans un format directement triable (année-mois-jour-heure-minutes-secondes(.fraction) ou timestamp Unix).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.