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 :

Faire une liste de md5


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut Faire une liste de md5
    Bonsoir

    J'aimerai générer un liste des md5 des fichiers d'un répertoires et de ses sous répertoires. J'ai trouvé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find * . -exec md5sum {} \; 2>/dev/null
    Je récupère ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bdb8382a35bc6fe5017ffb9fd60dcf72  common/installed/TomTom-Cfg/release.nfo
    23f2ad75e1fe8e44ad5d5768d7b101cf  common/installed/electric_vehicle_resources/ev_pois/electric_vehicle_stationOv2.ver
    266e217fd77047a5a29444b7d98a300d  common/installed/electric_vehicle_resources/ev_pois/electric_vehicle_station.inf
    99eaa13133365469966ce0a0af160d31  common/installed/electric_vehicle_resources/ev_pois/electric_vehicle_station.rpf
    Mais j'aurais aimé avoir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bdb8382a35bc6fe5017ffb9fd60dcf72  *common/installed/TomTom-Cfg/release.nfo
    23f2ad75e1fe8e44ad5d5768d7b101cf  *common/installed/electric_vehicle_resources/ev_pois/electric_vehicle_stationOv2.ver
    266e217fd77047a5a29444b7d98a300d  *common/installed/electric_vehicle_resources/ev_pois/electric_vehicle_station.inf
    99eaa13133365469966ce0a0af160d31  *common/installed/electric_vehicle_resources/ev_pois/electric_vehicle_station.rpf
    Il y a une astuce simple en bash ? Ou je dois me faire un petit programme en C ? Juste pour le plaisir de voir une astuce bash...
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  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,

    déjà on doit pouvoir améliorer juste un chouillat le find find * -type f -exec md5sum {} \;, on ne sélectionne que les fichiers, comme ça on est tranquille.

    ensuite si je comprends bien il s'agit juste de rajouter une astérisque devant le nom de fichier, comme ce qui le précède est de taille fixe on peut s'en sortir assez facilement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find * -type f -exec md5sum {} \; | awk '{print substr($0,1,34) "*" substr($0,35)}'
    la version bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    find * -type f -exec md5sum {} \; | while read line; do
       echo "${line:0:33} *${line:34}"
    done

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Merci

    Tu avais tout bien compris. Ça marche. Par contre, je ne comprends pas exactement tout...

    Je ne vois pas où trouver la doc sur le print, enfin quelque chose de plus clair que le man en anglais.
    Où peut-on trouver une doc sur le "${line:0:33}" ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Encore moi...

    je me suis rendu compte qu'il valait mieux faireun tri dans l'ordre alphabétique des noms. Je n'ai pas trouvé l'option avec find, j'ai donc fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find * -type f |  sort | while read line; do echo `md5sum "$line"`; done | while read line; do    echo "${line:0:32} *${line:33}"; done
    Mais, y a t'il plus simple ?

    (toujours épaté par la force du bash)
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find * -type f -exec md5sum {} \; | sed 's/  /  */' | sort
    D'abord, "find" ne fait pas de tri.

    Ensuite, je trouve louche de mettre * pour cible de "find".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -exec md5sum {} \; | sed 's@  ./@  *@' | sort
    Ces 2 commandes donnent le même résultat, non ?

  6. #6
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Ces deux commandes génèrent bien le même résultat, mais le tri n'est pas le tri demandé : en fonction du nom du fichier.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

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

Discussions similaires

  1. Faire une liste plus jolie de ma liste:lecture de base mysql
    Par CyberTwister dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/02/2006, 23h31
  2. Comment faire une liste d'évènements ?
    Par WebPac dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h36
  3. [VB]faire une liste
    Par kleen3x dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/01/2006, 17h40
  4. Comment faire une liste d'image de choix ?
    Par poussinphp dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/10/2005, 00h34
  5. Faire une liste de device??
    Par jackjack dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2003, 14h43

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