Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/12/2009, à 18: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 wink
Cordialement,
Thomas

Dernière modification par tom05 (Le 10/12/2009, à 21:29)

Hors ligne

#2 Le 10/12/2009, à 08: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, à 10: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, à 11: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 smile. 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, à 11:46

tom05

Re : [RESOLUT] Commande BASH.

oui pour le man find je ne comprenais pas deux trois paramétres d'où ma question wink 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, à 11:46)

Hors ligne

#6 Le 10/12/2009, à 12: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, à 16: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, à 17:02

compte supprimé

Re : [RESOLUT] Commande BASH.

Et un

find $chemin -type d -user "$utilisateur" -exec du -k {} \+

#9 Le 10/12/2009, à 17:19

tom05

Re : [RESOLUT] Commande BASH.

Même souci ...

Hors ligne

#10 Le 10/12/2009, à 17: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, à 21:28

tom05

Re : [RESOLUT] Commande BASH.

Ouai merci la commande fonctionne nikel maintenant! (Happy) wink
Merci pour vos solutions et vos explications.
Je passe le sujet en mode ===> RESOLUT

Hors ligne

#12 Le 12/12/2009, à 11: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, à 11:55)

Hors ligne

#13 Le 12/12/2009, à 13:37

Balkoth

Re : [RESOLUT] Commande BASH.

du -h --summarize /home/toto/Bureau/COURS/TP_IUT/

Hors ligne

#14 Le 12/12/2009, à 14: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 12/12/2009, à 23: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, à 12:00

tom05

Re : [RESOLUT] Commande BASH.

ok Merci à toi

Hors ligne