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 :

Commande du -sh changer le sens d'aperçu


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 44
    Par défaut Commande du -sh changer le sens d'aperçu
    Bonjour,

    Comment peut-on changer le sens d’aperçu des répertoires de cette commande:

    find $dir -maxdepth 1 -type d -exec du -sh {} \;
    Résultat de la commande:


    12 ko ./dossier1
    5G ./dossier2
    4Mo ./dossier3

    etc...
    Je souhaiterais obtenir résultats inversé:


    /dossier1 12ko
    /dossier2 5G
    /dossier3 4Mo

    etc...

    Merci de m'aider,


  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Philosophie Unix: Chaque commande ne fait qu'une seule chose mais le fait bien (et sous-entendu toujours de la même façon). En revanche, tu as tout un tas de commandes diverses qui te permettent de traiter les flux d'informations au travers de celles ci dans des chainages pipés pour arriver au résultat final.

    A priori, dans ton cas, moi je passerais par un awk pour lui demander d'inverser l'affichage des lignes issues du find.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $dir -maxdepth 1 -type d -exec du -sh {} \; |awk '{printf("%s\t%s\n", $2, $1)}'
    Ceci dit, comme il n'y a que deux champs, on peut peut-être passer par sed. Moins gourmand que awk mais aussi moins évident à comprendre d'emblée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $dir -maxdepth 1 -type d -exec du -sh {} \; |sed -e "s/\(.\{1,\}\)\t\(.\{1,\}\)/\2\t\1/"
    Explication de cette instructon barbare: je demande à récupérer tout caractère (.) répété 1 à plusieurs fois ({1,}) suivi d'une tabulation (\t) dans une zone qui sera mémorisé comme n° 1 (le premier jeu de parenthèses). Pareil pour les caractères qui suivent la tabulation sauf que la zone mémoire sera alors cette fois la n° 2 (le second jeu de parenthèses). Et je demande alors à remplacer ce couple par (/) un nouveau couple formé par ce qui se trouve en mémoire n°2 (\2) suivi d'une tabulation (\t) puis par ce qui se trouve en mémoire n° 1 (\1). Et tout ceci protégés par des backslashes pour éviter que ce soit le shell qui intercepte les caractères spécifiques de mémorisation/répétition (parenthèses, accolades) et qu'ils soient bien transmis à sed...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 44
    Par défaut Merci
    Salut,

    Merci pour ta réponse, j'ai résolu le problème.

    Mais j'ai un soucis d'affichage avec mes dossiers qui son de cette forme old - name:

    Résultat quand je lance la commande:
    ./dossier1
    ./old

    (je souhaiterais voir ./old - name 15ko)


    Merci de votre aide,


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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Code BAHS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    #unset n #utile uniquement pour un test en ligne de commande
    for d in ~/{,*/}
    do
       r="${d%/*}"
       read -r s r < <(du -sh "$r")
       ((n++)) && r="${r##*/}"
       printf '%-20s%s\n' "$r" "$s"
    done
    il faut vraiment que tu apprennes à coder !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zara5 Voir le message
    Résultat quand je lance la commande:
    Laquelle ? T'as raison, ne la met pas, ça aurait été trop facile sinon

    En tout cas, ma seconde à base de sed fonctionne très bien.

    Pour la première, effectivement, comme awk coupe les mots sur l'espace, il est normal qu'il rate le "- name" puisque ces éléments sont dans les champs $3 et $4...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 44
    Par défaut Merci
    Salut,

    Dsl je suis débutant ds la programmation, je commence apprendre, un jour j'apporterais mon savoir à ce forum.

    Effectivement, la seconde méthode marche je te remercie.

    Bonne soirée,


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

Discussions similaires

  1. [JpGraph] Changer le sens de lecture d'un graph radar
    Par toffou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/09/2010, 16h52
  2. Changer le sens de lecture d'un JComboBox
    Par Snawel dans le forum Composants
    Réponses: 0
    Dernier message: 24/10/2009, 11h36
  3. Réponses: 3
    Dernier message: 07/01/2009, 08h40
  4. [datetick] Changer le sens des valeurs d'un axe
    Par Ed Wood dans le forum MATLAB
    Réponses: 20
    Dernier message: 17/04/2008, 15h38
  5. [FLASH 8] changer le sens d'un clip ?
    Par bibile dans le forum Flash
    Réponses: 10
    Dernier message: 21/08/2006, 16h14

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