Exiftool est un outil pour lire, écrire et éditer les métadonnées des fichiers multimédias, y compris les fichiers vidéo. Il faut donc commencer par l’installer si ce n’est pas déjà fait :
sudo apt install exiftool
En fonction de votre distribution vous adapterez.
AVERTISSEMENT !
- Toujours avoir une sauvegarde des fichiers à modifier.
- Comme nous allons utiliser également la commande "find", qui est récursive, mettre vos fichiers à modifier dans un répertoire sans sous-répertoire.
Voici la commande :
find . -iname "*.mp4" -exec exiftool '-filename<CreateDate' -d "%Y-%m%d-%Hh%Mm%Ss-Nom_de_votre_choix.mp4" {} +
Explication de la commande
find . -iname "*.mp4"
: Trouve tous les fichiers avec l'extension .mp4 (avec -iname, peu importe la casse de mp4) soit dans le répertoire courant et ses sous-répertoires (d’où l’avertissement plus haut).
-exec exiftool '-filename<CreateDate'
: Utilise exiftool pour renommer chaque fichier en utilisant la valeur de CreateDate.
-d "%Y-%m%d-%Hh%Mm%Ss-
Nom_de_votre_choix.mp4"
: Spécifie le format du nom de fichier de sortie. Ici, %Y, %m, %d, %Hh, %Mm, %Ss sont des formatages pour l'année, le mois, le jour, l’heure, la minute et la seconde de création, et Nom_de_votre_choix" est une chaîne fixe que vous pouvez modifier, bref, le nom que vous souhaitez donner
{}
: Représente chaque fichier trouvé par find.
+
: Permet d'exécuter une seule commande exiftool pour tous les fichiers trouvés
Exemple concret
J’ai un répertoire "Work" dans lequel se trouve plusieurs sous-répertoires dont un qui s’appelle "vid"
J’ai mis une copie de mes vidéos à renommer dans le répertoire "vid"
Je me positionne sur le répertoire en question
cd Work/vid
Je vérifie :
ls 20240611_100113.mp4 20240611_104333.mp4 20240612_120842.mp4 20240612_154830.mp4 20240611_104308.mp4 20240611_144029.mp4 20240612_154728.mp4 20240612_204306.mp4 20240611_104323.mp4 20240612_120121.mp4 20240612_154803.mp4
Mes vidéos sont bien là et il n’y a pas de sous-répertoire.
On lance la commande :
find . -iname "*.mp4" -exec exiftool '-filename<CreateDate' -d "%Y-%m%d-%Hh%Mm%Ss-Nom_de_votre_choix.mp4" {} + 11 image files updated
Vérification :
ls 2024-0611-08h01m52s-Nom_de_votre_choix.mp4 2024-0611-12h40m44s-Nom_de_votre_choix.mp4 2024-0612-13h48m16s-Nom_de_votre_choix.mp4 2024-0611-08h43m19s-Nom_de_votre_choix.mp4 2024-0612-10h01m35s-Nom_de_votre_choix.mp4 2024-0612-13h48m49s-Nom_de_votre_choix.mp4 2024-0611-08h43m28s-Nom_de_votre_choix.mp4 2024-0612-10h09m01s-Nom_de_votre_choix.mp4 2024-0612-18h43m10s-Nom_de_votre_choix.mp4 2024-0611-08h43m38s-Nom_de_votre_choix.mp4 2024-0612-13h47m42s-Nom_de_votre_choix.mp4
Pour que ce soit plus parlant on remplace Nom_de_votre_choix par Vacances
find . -iname "*.mp4" -exec exiftool '-filename<CreateDate' -d "%Y-%m%d-%Hh%Mm%Ss-Vacances.mp4" {} + 11 image files updated ls 2024-0611-08h01m52s-Vacances.mp4 2024-0611-08h43m38s-Vacances.mp4 2024-0612-10h09m01s-Vacances.mp4 2024-0612-13h48m49s-Vacances.mp4 2024-0611-08h43m19s-Vacances.mp4 2024-0611-12h40m44s-Vacances.mp4 2024-0612-13h47m42s-Vacances.mp4 2024-0612-18h43m10s-Vacances.mp4 2024-0611-08h43m28s-Vacances.mp4 2024-0612-10h01m35s-Vacances.mp4 2024-0612-13h48m16s-Vacances.mp4
C’est terminé !
Hé Sima, et la deuxième possibilité.
Ha oui, j’allais oublier.
J’avais pensé à utiliser ffmpeg
ou plus précisément ffprobe
qui est inclus dans ffmpeg et permet d’extraire les métadonnées.
Mais j’avoue ne pas avoir trouvé comment le faire en une ligne.
Soit, dans un script c’est possible.
On extrait les métadonnées avec ffprobe
, puis utiliser structure conditionnelle if else fi
pour traiter/formater les données et renvoyer vers un find
incluant bash -c 'rename_file "$0"'
Bref, l’idée est là, un truc de ce genre, mais comme j’ai une ligne qui fait le job, je ne me suis pas creusé la tête pour créer un script.
Vous avez une d'autres idées en ligne de commande? des questions? n'hésitez pas à utiliser les commentaires.
Le bille "Renommer vos videos par lot en utilisant les metadonnees" est apparu en premier sur le blog de Sima78.
Derniers commentaires