Pages : 1
#1 Le 09/12/2009, à 19:33
- tom05
[RESOLUT] Commande BASH.
Bonjour,
Je débute en bash eet je block a un endroit... J'aurais aimé avoir quelques conseils. Je sais qu'il est possible de connaître la taille d'un dossier par la commande "du". Donc voila mon souci : je doit chercher tout les dossiers d'un utilisateur et dire lequel est de taille min et lequel est de taille max.
J'ai essayé ceci qui me paraissait pas mal parti mais bon ... ==>
dossier_max=$(find $chemin -type d -user "$utilisateur" -print | du -k | sort -nr | sed -n '2p' )
Quelqu'un pourait-il m'aiguiller dans une direction ou corriger ma fake commande
Cordialement,
Thomas
Dernière modification par tom05 (Le 10/12/2009, à 22:29)
Hors ligne
#2 Le 10/12/2009, à 09:38
- compte supprimé
Re : [RESOLUT] Commande BASH.
Hello,
je suppose que c'est déjà la partie
find $chemin -type d -user "$utilisateur" -print | du -k
qui te pose problème ? J'ai essayé et chez moi c'est pas terrible le résultat.
Par contre :
find $chemin -type d -user "$utilisateur" -exec du -k {} \;
fonctionne bien mieux.
Et donc
find $chemin -type d -user "$utilisateur" -exec du -k {} \; | sort -nr | sed -n '2p'
Me donne des choses intéressantes.
#3 Le 10/12/2009, à 11:50
- tom05
Re : [RESOLUT] Commande BASH.
Merci pour ta réponse qui fonctionne parfaitement dans mon cas. Cependant j'aurais plusieur qestions à te poser sur cette commande:
1- Pourquoi cette commande me sort plusieur fois le même dossier genre:
toto@toto-laptop:~$ find /home/toto/Bureau/COURS/TP_IUT/ -type d -user "toto" -exec du -k {} \; | sort -nr
3636 /home/toto/Bureau/COURS/TP_IUT/
1864 /home/toto/Bureau/COURS/TP_IUT/Assembleur
1864 /home/toto/Bureau/COURS/TP_IUT/Assembleur
1556 /home/toto/Bureau/COURS/TP_IUT/c++
1556 /home/toto/Bureau/COURS/TP_IUT/c++
1312 /home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1
1312 /home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1
1312 /home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1
736 /home/toto/Bureau/COURS/TP_IUT/c++/TP1
2-Question de connaissance perso, à quoi sert le -exec, cela permet -il " d'incruster " une commande dans une autre commande? genre grep?
Cordialement,
Thomas
Hors ligne
#4 Le 10/12/2009, à 12:10
- compte supprimé
Re : [RESOLUT] Commande BASH.
Pour le 1, je ne sais pas chez moi ça marche.
Si tu fais un simple
find /home/toto/Bureau/COURS/TP_IUT/ -type d -user "toto"
Tu as quoi comme résultat ?
Pour le 2, il y a man find . L'option -exec permet à find de lancer une commande pour chaque élément trouvé. Le {} correspond au fichier trouvé et le \; est pour dire à find qu'il s'agit de la fin de la commande.
A priori tu peux aussi faire un -exec du {} \+, si tu lis le man tu verras la différence entre \+ et \; , et pour du cela ne pose pas de problème.
#5 Le 10/12/2009, à 12:46
- tom05
Re : [RESOLUT] Commande BASH.
oui pour le man find je ne comprenais pas deux trois paramétres d'où ma question Tu y as répondut.
voici le résulat de la commande find /home/toto/Bureau/COURS/TP_IUT/ -type d -user "toto":
toto@toto-laptop:~$ find /home/toto/Bureau/COURS/TP_IUT/ -type d -user "toto"
/home/toto/Bureau/COURS/TP_IUT/
/home/toto/Bureau/COURS/TP_IUT/c++
/home/toto/Bureau/COURS/TP_IUT/c++/TP2
/home/toto/Bureau/COURS/TP_IUT/c++/TP2/Exercice2
/home/toto/Bureau/COURS/TP_IUT/c++/TP1
/home/toto/Bureau/COURS/TP_IUT/c++/TP1/archi
/home/toto/Bureau/COURS/TP_IUT/c++/TP7
/home/toto/Bureau/COURS/TP_IUT/c++/TP8
/home/toto/Bureau/COURS/TP_IUT/c++/TP5
/home/toto/Bureau/COURS/TP_IUT/c++/TP6
/home/toto/Bureau/COURS/TP_IUT/c++/TP6/Exercice2
/home/toto/Bureau/COURS/TP_IUT/c++/TP4
/home/toto/Bureau/COURS/TP_IUT/c++/TP3
/home/toto/Bureau/COURS/TP_IUT/c++/TP3/6
/home/toto/Bureau/COURS/TP_IUT/c++/TP3/5
/home/toto/Bureau/COURS/TP_IUT/Système_d'exploitation
/home/toto/Bureau/COURS/TP_IUT/Système_d'exploitation/TD3
/home/toto/Bureau/COURS/TP_IUT/Système_d'exploitation/TD5
/home/toto/Bureau/COURS/TP_IUT/Système_d'exploitation/TD2
/home/toto/Bureau/COURS/TP_IUT/Système_d'exploitation/TD4
/home/toto/Bureau/COURS/TP_IUT/Système_d'exploitation/PROJET
/home/toto/Bureau/COURS/TP_IUT/Assembleur
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1/test
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP2a
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP2d
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP2e
/home/toto/Bureau/COURS/TP_IUT/Assembleur/Lib IUT
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP2c
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1b
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1b/Exemple1
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1b/Exemple2
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1b/Exemple3
/home/toto/Bureau/COURS/TP_IUT/Assembleur/TP1b/Exemple4
Thomas
Dernière modification par tom05 (Le 10/12/2009, à 12:46)
Hors ligne
#6 Le 10/12/2009, à 13:29
- compte supprimé
Re : [RESOLUT] Commande BASH.
Donc le find ne te renvoie qu'une fois chaque répertoire (c'est bien ce qu'on lui demande !!)
Donc les doublons apparaissent, soit à cause du du, soit à cause du sort. Je te laisse vérifier.
#7 Le 10/12/2009, à 17:53
- tom05
Re : [RESOLUT] Commande BASH.
Merci pour tes explications!
Bon bin les doublons proviennent de la commande "du"
Hors ligne
#8 Le 10/12/2009, à 18:02
- compte supprimé
Re : [RESOLUT] Commande BASH.
Et un
find $chemin -type d -user "$utilisateur" -exec du -k {} \+
#9 Le 10/12/2009, à 18:19
- tom05
Re : [RESOLUT] Commande BASH.
Même souci ...
Hors ligne
#10 Le 10/12/2009, à 18:48
- Balkoth
Re : [RESOLUT] Commande BASH.
Bonjour,
Tu as plusieurs fois le même dossier qui apparaît dans les résultats car la commande du affiche par défaut la taille de tous les sous-répertoires du répertoire passé en paramètre.
En passant l'option --summarize, on résout le problème :
find $chemin -type d -user "$utilisateur" -exec du -k --summarize {} \; | sort -nr
Hors ligne
#11 Le 10/12/2009, à 22:28
- tom05
Re : [RESOLUT] Commande BASH.
Ouai merci la commande fonctionne nikel maintenant! (Happy)
Merci pour vos solutions et vos explications.
Je passe le sujet en mode ===> RESOLUT
Hors ligne
#12 Le 12/12/2009, à 12:49
- tom05
Re : [RESOLUT] Commande BASH.
Rebonjour,
J'espére que qq'un relira ce post... Car j'ai une derniére question ..;)
J'ai essayé d'utiliser la commande donné pour les fichiers en utilisant la commande :
find /home/toto/Bureau/COURS/TP_IUT/ -type f -user "toto" -exec du -h -a {} \;
Cependant cela me donne le total de chaques fichiers ... C'est logique me diriez-vous, mais y a-t-il une commande alternative permettant de donner le total de la place prise par tous les fichiers. (La somme de tous les totaux renvoyés par le du ?)
Thomas
Dernière modification par tom05 (Le 12/12/2009, à 12:55)
Hors ligne
#13 Le 12/12/2009, à 14:37
- Balkoth
Re : [RESOLUT] Commande BASH.
du -h --summarize /home/toto/Bureau/COURS/TP_IUT/
Hors ligne
#14 Le 12/12/2009, à 15:12
- tom05
Re : [RESOLUT] Commande BASH.
Merci pour ta réponse.
Es-que cette commande marcche aussi?
find /home/toto/Bureau/COURS/TP_IUT/ -type f -user "toto" -exec du -a -h -c {} \+ | grep total
Car j'obtient une différence de 0.1M... D'où provient cette différence?
Hors ligne
#15 Le 13/12/2009, à 00:09
- Balkoth
Re : [RESOLUT] Commande BASH.
Oui, ta commande marche aussi.
La différence vient peut être du fait que la commande que j'ai postée ne tiens pas compte de l'utilisateur des fichiers. Tu as sans doute un fichier de 0.1M qui n'appartient pas à "toto" quelque part dans ce répertoire.
Hors ligne
#16 Le 13/12/2009, à 13:00
- tom05
Re : [RESOLUT] Commande BASH.
ok Merci à toi
Hors ligne