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 :

Fichier à lire ou commande externe ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 209
    Par défaut Fichier à lire ou commande externe ?
    Bonjour,

    Je travail actuellement à un script me permettant de travailler sur un grand nombre de fichier vidéo (plusieurs centaines / milliers).
    Afin de savoir si un fichier à été déjà traité, j'y ajoute des métadonnées, et j'ajoute son chemin absolu à une liste dans un fichier texte.
    Aussi, lors de la recherche de nouveaux fichiers, le script vérifie qu'il ne sont pas présent dans la liste du fichier texte. Je verifie, avec une application tierce, qu'il ne contient pas non plus les métadata que j'y ajoute, afin de ne pas lui appliquer un traitement qui est parfois long. Si le traitement à déjà été effectué, j'ajoute ce nouveau chemin absolu au fichier texte.

    Et je ne pose un question toute bête :
    Qu'adviendra t il dans quelques années, lorsque j'aurais un fichier texte qui contiendra plusieurs milliers de lignes... Voir plusieurs dizaine de milliers de lignes si un zozo s'amuse à renommer les dossiers ou les fichiers ?
    Je suis plutot novice en sh, mais en programmation en général, il faut ce mefier des ressources consommées, et je me demande s'il est pertinent d'adopter cette solution...
    Ne devrais je pas plutôt me diriger vers une vérification systématique des metadata via le binaire externe, et zapper le fichier texte ???
    D'autant que le script risque de tourner 24/24-7/7 pour la 1ere passe durant plusieurs mois...

    Bref, vous l'aurez compris, j'ai une partie de ma réponse dans la question, mais vous qu'en pensez vous ?

    Bien cordialement

    Tepaze

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    les fichiers que tu traites (nouveaux + anciens) sont ils dans des arborescences spécifiques ou disséminés un peu partout ?
    une solution simple pourrait être de déplacer les fichiers vers un répertoire déjà_traités/ par exemple
    edit: note que même sans parler de déplacer physiquement les fichiers, il est peut-être envisageable de faire un répertoire déjà_traité/ contenant uniquement des liens symboliques vers les fichiers, il devient alors facile de checker si un lien est cassé (fichier renommé/déplacé/supprimé)

    le point que tu soulèves vis à vis du nom de fichier et de son éventuel renommage est pertinent, si on considère qu'on travaille exclusivement sur une même partition (que les fichiers ne sont pas déplacés d'une partition à une autre) le numéro d'inode pourrait être un identificateur plus fiable

    mais comme tu le fait remarquer la solution la plus safe reste encore de vérifier directement la présence de tes metadatas, en revanche niveau perfs c'est précisément là que ça risque d'être consommateur

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 209
    Par défaut
    Merci BufferBob,

    Je n'avais pas pensée aux liens symboliques. Cela me semble être une solution à creuser... Mais quid des fichiers ayant le même nom ?

    Tous mes fichiers sont disséminé dans des ensembles de dossiers, sous dossiers et de volumes sur plusieurs NAS. Beaucoup de fichiers ont exactement le même nom, et cela n'est pas modifiable.

    Niveau perf, je suis partagé. Les processus appliqués aux fichiers durent plusieurs heures, voir plusieurs jours, donc checker si un fichier contient les métadatas est certes une perte de temps lorsque l'on doit re-scanner l'ensemble des volumes, en même temps c'est relatif comparé aux traitements à proprement dit...

    Bref, je suis toujours preneur de d'avis et de conseils :-)

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Citation Envoyé par tepaze Voir le message
    Afin de savoir si un fichier à été déjà traité, j'y ajoute des métadonnées, et j'ajoute son chemin absolu à une liste dans un fichier texte.
    Bon ben, déjà, là, ça fait doublon. Écrire des métadonnées est malin pour ne pas avoir de fichier de recensement à côté.
    Citation Envoyé par tepaze Voir le message
    j'y ajoute des métadonnées
    Si il y a une entête DESC=13 et que tu la transformes en DESC=14, ce n'est pas facilement détectable. Mais si tu ajoutes TEPAZE_MODIFIED, tu peux faire un truc similaire à ce qui suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ find repertoire -name "*.mp4" -exec grep -a -i -o -H TEPAZE_MODIFIED {} \;
    Un exemple similaire qui recherche la chaine jpg dans un fichier jpg (donc binaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ find monRepertoire -name "*.jpg" -exec grep -a -i -o -H jpg {} \;
    monRepertoire/toto/polo.jpg:jPg
    monRepertoire/toto/polo2.jpg:jPg
    monRepertoire/toto/polo3.jpg:JPG
    monRepertoire/toto/polo4.jpg:jpG
    monRepertoire/titi/pola.jpg:jPg
    monRepertoire/titi/pola.jpg:jpg
    monRepertoire/titi/pola2.jpg:JPG

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    En reprenant l'idée du lien symbolique, tu peux très bien faire un md5sum du fichier et incorporer celui-ci dans le nom du lien.

    Par contre, il y a une contrainte: si tu as 2 fois le même fichier avec le même nom mais dans un répertoire différent, tu n'auras qu'un seul lien.

    Ce qui peut être un avantage, c'est qu'un fichier renommé gardera quand même le même md5sum (tant que l'on ne modifie pas son contenu).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 209
    Par défaut
    Ok, j'y vois plus clair au fur et à mesure.

    Flodelarab, je ne comprend pas un truc, tu recherches une chaine dans un binaire (un jpg), mais, j'avoue, je ne sais pas comment est construit un binaire, aussi, actuellement j'utilise soit un exif, soit un metadata specifique aux flux video. Alors, comment procede tu toi pour ajouter ton metadata ?

    Je crois que je vais me diriger vers un examen systématique du fichier à la recherche du métadata, et mettre de coté les autres options. Merci BufferBob et Disedorgue pour vos pistes de reflexion.

    EDIT :
    Et aussi, un fichier de plusieurs milliers de ligne peut il poser probleme à l'ouverture au sein du script ?

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    On ne s'est pas compris. J'imaginais des métadonnées, que tu as ajoutées, en clair dans le fichier, qu'on aurait pu lire sans outil supplémentaire.
    Ce n'est pas ça mais ce n'est pas grave. Il faudrait connaître l'extension de ton fichier vidéo.

    • Si c'est un fichier libre *.ogg, tu peux utiliser "oggz-comment" pour lire ou modifier des méta-données.
    • Si c'est un fichier *.mp4 ou *.flv ou ..., tu peux utiliser "avprobe", du paquet libav-tools, pour extraire les meta-données. (Je n'ai rien installé à l'instant, et ça marche)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 209
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Si c'est un fichier *.mp4 ou *.flv ou ..., tu peux utiliser "avprobe", du paquet libav-tools, pour extraire les meta-données.
    C'est ce que je fais actuellement avec ffprobe.
    Un instant j'ai cru que l'on pouvais ajouter à un binaire des données réutilisable avec un simple editeur de texte. J'etais étonné, mais aussi intéressé :-)

    Merci

    Bonne soirée

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

Discussions similaires

  1. Souci commande externe et lecture fichier
    Par lostsoul dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 17/05/2011, 16h09
  2. [Lazarus] Exécution de commande externe
    Par SaintShakaJin dans le forum Lazarus
    Réponses: 3
    Dernier message: 26/04/2005, 13h13
  3. Réponses: 5
    Dernier message: 19/04/2005, 08h50
  4. [Fichier] Lire le contenu d'un fichier
    Par bart64 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 19/09/2004, 18h18
  5. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 15h22

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