Bonjour,
J'aimerais renommer mes vidéos selon les métadonnées de date (ça fait un peu suite à mes dernières demandes).
Du coup, j'ai "écrit" (…recopié des bouts…) ce script :
#!/bin/bash
for src in src/*.mp4 ; do
heure=$(exiftool -DateTimeOriginal ${src} |sed -e 's/^.*: //')
cp ${src} dst/"${heure}.mp4"
done
Pour des fichiers dans un dossier src (source) destinés à un dossier dst (destination).
Ça fonctionne, mais je n'ai pas réussi à faire trois choses :
1) Le faire pour tous les fichiers mp4 et MP4 (j'aurais pu garder l'astérisque seulement, j'imagine, mais j'ai parfois d'autres fichiers).
2) Ajouter le nom, du type 2019:01:01 12:00:00_DSC09001.mp4" (le DSC09001.mp4)
3) Être un peu plus "verbeux" si possible.
Pourriez-vous me donner des pistes, s'il vous plaît ? :)
# find est ton ami
Posté par Cyril Brulebois (site web personnel) . Évalué à 3.
Tu utilises :
En fonction du shell, tu peux probablement feinter pour ignorer la casse, mais ceci est portable :
find src -type f -iname '*.mp4'
(tu peux jouer avec-name
versus-iname
et/ou regarder la documentation).Pour ajouter le nom, tu as la variable
$src
qui peut servir. Tu peux extraire le nom du fichier avecbasename
(cf. aussidirname
).Pour la verbosité,
cp
,mv
, etc. ont une option-v
. Sinon tu peux faire duecho
ouprintf
toi-même.Bonnes évolutions.
Debian Consultant @ DEBAMAX
[^] # Re: find est ton ami
Posté par Stinouff . Évalué à 1.
L'option -v…quel imbécile je fais parfois. :D
Merci pour les pistes (dont basename, en fait, dont j'ai déjà emprunté l'usage à l'aveugle, finalement…).
Je devrais m'en sortir ! :)
# $(ls *.mp4 *.MP4)
Posté par seb . Évalué à 3. Dernière modification le 29 juillet 2019 à 14:55.
Salut,
Commande test1.mp4
Commande test2.MP4
donc je pense que devrait fonctionner avec ça:
[^] # Re: $(ls *.mp4 *.MP4)
Posté par Stinouff . Évalué à 1.
Je vais également tester cette façon de lister les fichiers qui m'intéressent (ça peut servir pour d'autres formats, du coup).
Merci bien ! :)
[^] # Plus simple
Posté par Arthur Accroc . Évalué à 3.
Bonjour,
Pourquoi faire si compliqué ?
for in accepte plusieurs arguments (d’ailleurs même si l’on ne met qu’un seul nom avec un joker, il est développé avant d’être passé à cette instruction.
Donc
fera l’affaire.
Sinon, j’aurais utilisé
cp -p
voirecp -a
pour préserver les dates et les attributs des fichiers.Quoique s’il s’agit réellement de renommer comme dit dans la question, c’est
mv
qu’il faut (mais l’utilisation de cp est peut-être pour s’assurer que le résultat convienne avant de supprimer les fichiers originaux).« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Plus simple
Posté par Stinouff . Évalué à 1.
Merci ! :)
Je travaille toujours sur des sauvegardes et l'utilisation de cp plutôt que de mv, c'est simplement pour éviter une copie de plus. :D
# Encore plus simple…
Posté par zipe31 . Évalué à 2.
Salut,
;-))
PS. À noter que "ls" est à proscrire dans un script ;-(
[^] # Re: Encore plus simple…
Posté par Stinouff . Évalué à 1.
Salut,
Pourquoi ls est déconseillé ? :)
[^] # Re: Encore plus simple…
Posté par zipe31 . Évalué à 1.
Pour éviter des mésaventures si par malheur certains noms de fichiers venaient à contenir des espaces.
Mieux vaut privilégier le mécanisme interne du shell concernant le développement des noms.
[^] # Re: Encore plus simple…
Posté par Stinouff . Évalué à 1.
Ok merci ! :)
# Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.