IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Modification date et heure de fichier en masse


Sujet :

Shell et commandes GNU

  1. #1
    Yro
    Yro est déconnecté
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 21
    Par défaut Modification date et heure de fichier en masse
    Bonjour,

    J'ai actuellement un répertoire contenant des vidéos (tous au format mp4) et un fichier description pour chacun de ces fichiers qui contient des informations relatives à cette vidéo.

    exemple:
    'Mon premier fichier vidéo.mp4'
    'Mon premier fichier vidéo.description'
    'Mon deuxième fichier vidéo.mp4'
    'Mon deuxième fichier vidéo.description'
    'Mon troisième fichier vidéo.mp4'
    'Mon troisième fichier vidéo.description'


    Mon problème est que dans l'explorateur, lorsque je trie les vidéos par date, j'ai toutes les vidéos et puis toutes les descriptions. En effet, mes fichiers ".description' sont tous à une date ultérieur.

    J'aimerai donc créer et lancer un script qui me permettrait de modifier les dates et heures des fichiers ".description" pour les aligner avec la date et heure des fichiers vidéos
    auquel il se rapporte.

    Ils ont d'office le même nom (juste l'extension qui change).

    Je suis sous Linux, je peux donc faire cela en Bash ou python.

    J'ai déjà essayé avec "Find, touch, , ....." Je n'y arrive pas.

    Pourriez-vous m'aider svp?

    Je vous souhaite une agréable journée.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 653
    Par défaut
    Bonjour,

    avant d'essayer de coder, explique-nous en détail comment tu ferais à "la main".

    pour le code,
    la récupération de la date du fichier .mp4 se fera avec la commande stat, qui permet de restreindre les informations sur un fichier au strict nécessaire,
    et, en effet, modifier la date du fichier description se fera avec touch.

    mais d'abord, l'algorithme !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Yro
    Yro est déconnecté
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 21
    Par défaut
    Pour tout les fichiers mp4 faire : Copier date/heure du fichier du même nom avec ".description" en extension

    J'avais esssayé cela mais en réalité cela ne fonctionne pas car il faut remplacer le .mp4 par le .description. Je pense donc qu'il faille utiler "sed" en plus non?

    find . -name *.mp4 -exec touch -r '{}.description' '{}' \

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 653
    Par défaut
    find n'est pas utile ici*, parce que tous les fichiers sont dans le même répertoire - on va plutôt utiliser une boucle for sur un Développement de chemins (cf. cette expression dans le man).

    sed n'est pas indispensable, parce que bash possède des Remplacements de paramètres (cf. cette expression dans le man) améliorés par rapport à la norme POSIX.
    il y en a un qui permet de tout garder jusqu'à un motif indiqué :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ v=/chemin/vers:fichier.foo.bar
    $ rad="${v%.*}"
    $ echo "$rad"
    /chemin/vers/fichier.foo

    --
    * ça pourrait même amener plus de complications puisqu'il y a plusieurs opérations à effectuer.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Yro
    Yro est déconnecté
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 21
    Par défaut
    Merci beaucoup pour la réponse éclairée

    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    for file in ./*.description; do
    	echo Trouvé $file
    	fileRef="${file%.*}.mp4"
    	echo Reference $fileRef	
    	touch -r "$fileRef" "$file"
    done
    Cela a bien fonctionné.
    Mille merci

    Belle journée à toi.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 653
    Par défaut
    touch -r excellent !

    avec un petit test pour vérifier que le fichier correspondant existe effectivement (pour éviter une message d'erreur, si ce n'est pas le cas - on ne sait jamais.), et ce sera très bien.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nom de fichier avec date et heure
    Par Pipon dans le forum Général VBA
    Réponses: 7
    Dernier message: 19/10/2012, 11h17
  2. [Inno Setup] Modif date d'un fichier à l'install
    Par ValerieDo dans le forum Outils
    Réponses: 1
    Dernier message: 19/01/2009, 13h48
  3. Réponses: 8
    Dernier message: 29/05/2008, 13h26
  4. [MFC]Modification date/heure système
    Par jacklafrip dans le forum MFC
    Réponses: 2
    Dernier message: 24/05/2007, 17h24
  5. [Indy TIdFtp] Date et Heure d'un fichier
    Par portu dans le forum Delphi
    Réponses: 2
    Dernier message: 06/06/2006, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo