[quote=“MisterFreez”]Si vraiment tu veut le faire tenir en une ligne :
En effet j’ai oublié de remplacer le nom de la variable dans la redirection de du.
[quote=“MisterFreez”]Si vraiment tu veut le faire tenir en une ligne :
En effet j’ai oublié de remplacer le nom de la variable dans la redirection de du.
Bon ! je passe pour cette fois mais attention, la prochaine fois que tu oublies quelque chose de si important, tu copieras 100 fois :
"je dois relire mon travail avant de le présenter"
Plus sérieusement, maintenant, ça fonctionne mais je préférerais le tri à l’envers : + gros en premier. Possible ?
Chef ! Oui ! Chef !
Si je peux conseiller l’utilisation d’un script shell :
[code]#!/bin/sh
parse_size ()
{
awk -v car="$2" -v name="$3" ‘$1~car{ gsub(car, “”, $1); print $1"\t"name"\t"$2}’ “$1” | sort -rg
echo
}
fichier=$(mktemp)
du -Dhs $1/* > ${fichier}
parse_size “${fichier}” ‘T’ 'Tio’
parse_size “${fichier}” ‘G’ 'Gio’
parse_size “${fichier}” ‘M’ 'Mio’
parse_size “${fichier}” ‘K’ ‘Kio’
#rm “${fichier}”[/code]
Si je m’autorisais à utiliser bash je ferais ainsi :
[code]#!/bin/bash
parse_size ()
{
awk -v car="$2" -v name="$3" ‘$1~car{ gsub(car, “”, $1); print $1"\t"name"\t"$2}’ “$1” | sort -rg
echo
}
declare -A sizes
sizes[E]='Eio’
sizes[T]='Tio’
sizes[G]='Gio’
sizes[M]='Mio’
sizes[K]=‘Kio’
fichier=$(mktemp)
du -Dhs $1/* > ${fichier}
for i in “${!sizes[@]}” ; do
parse_size “${fichier}” “$i” "${sizes[$i]}"
done
rm “${fichier}”[/code]
Sauf que l’utilisation d’un fichier est dommage on devrait pouvoir l’éviter en modifiant l’IFS et en mettant tout dans un tableau. Mais je ne ferrai pas ça maintenant.
fr.wikipedia.org/wiki/UUOC#Cat_et_UUOC[/quote]
Merci c’est bien intéressant les UUOC. Il me semblait que les redirections en entrée ne fonctionnaient pas avec toutes les commandes (j’en suis même quasiment sûr), c’est pourquoi je ne les utilisais plus, mais va faloir que je revois tout ça + en détail et que j’identifie les coupables et que je comprenne pourquoi elles se comportent comme ça.
J’ai essayé toute tes commandes et scripts et ça marche bien, bravo je vais me pencher sérieusement là dessus (pas eu 1 seconde depuis ce matin), par contre avec find j’avais aussi les répertoires .cachés (en fait j’avais tous les rép de 1er niveaux, cachés ou pas, liens symboliques ou pas, comme annoncé en somme )
Je ne sais pas si on peut avoir ça avec “du” sans se farcir les fichiers normaux aussi (dont je ne veux pas).
C’est un peu pour ça que j’utilise systématiquement find : je sais un peu m’en servir ( bien que je ne maîtrise tjs pas cette foutue commande de #@${! )
Gi, Mi, Ki, c’est pour dire puissance de 1024 ? si tu voulais dire puissance de 1000 tu aurais mis G, M, K, c’est bien ça ? et c’est dorénavant normalisé ? (fdisk dit : Disk /dev/sda: 160 GB, 160039272960 bytes et ça, ça a le don de m’énerver ! parce que pour moi 160 GB -> 171798691840 bytes, bon c’est pas grave pffff )
A Ricardo : il est bien beau ton établi !
Allez, ciao by-by
fr.wikipedia.org/wiki/UUOC#Cat_et_UUOC[/quote]
Merci c’est bien intéressant les UUOC. Il me semblait que les redirections en entrée ne fonctionnaient pas avec toutes les commandes (j’en suis même quasiment sûr), c’est pourquoi je ne les utilisais plus, mais va faloir que je revois tout ça + en détail et que j’identifie les coupables et que je comprenne pourquoi elles se comportent comme ça.[/quote]
cat fic | cmd
est strictement équivalent à
cmd < fic
Mais beaucoup de commande permettent d’écrire :
cmd fic
[quote=“Rantanplan aussi !”]J’ai essayé toute tes commandes et scripts et ça marche bien, bravo je vais me pencher sérieusement là dessus (pas eu 1 seconde depuis ce matin), par contre avec find j’avais aussi les répertoires .cachés (en fait j’avais tous les rép de 1er niveaux, cachés ou pas, liens symboliques ou pas, comme annoncé en somme )
Je ne sais pas si on peut avoir ça avec “du” sans se farcir les fichiers normaux aussi (dont je ne veux pas).
C’est un peu pour ça que j’utilise systématiquement find : je sais un peu m’en servir ( bien que je ne maîtrise tjs pas cette foutue commande de #@${! )[/quote]
du -Dhs * .*
devrait suffir non ?
En effet :
fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire
On ne s’instruit jamais assez :
univers-libre.net/index.php/2010 … -dun-du-h/
Donc un du -Dsh * .* | sort -rh
Les UUOC ont déjà tuées qui ?
Je suis quasiment sûr qu’il y a des commandes qui n’acceptent pas cette forme:
commande < fichier
Je vais chercher. Par contre je ne connais pas de commande qui n’accepte pas cette forme :
commande fichier
si la commande est censé traiter des fichiers évidemment.
[quote=“MisterFreez”]En effet :
fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire[/quote]
Dommage que tout le monde ne suivent pas ces règles, enfin bref … mais merci pour la confirmation (que je continerais à m’énerver pour rien là dessus, mais pas à cause de toi en tout cas !)
[quote]du -Dsh * .*
du -Dsh * .* | sort -rh[/quote]
Ben non, parce que comme je te le disais + haut ça me sort aussi .bashrc par exemple (dont je n’ai cure lorsque je cherche à savoir quel rép. prends de la place )
Le pire c’est que .* fait redescendre dans le répertoire parent !
Non, décidemment, j’aime pas ces * .* et autre globbing machin chose imprévisibles ! je reste sur mon find et mes regex qui sont fiables (enfin pour moi) et j’embauche ton awk pour finir élégament le travail de du : ça c’est du bon job d’équipe. En tout cas je ne vais pas m’enregistrer sur univers-libre.net/index.php/2010 … -dun-du-h/
juste pour aller leur dire que leur commande ne permet pas de connaitre la taille des rép .cachés … et que je doute que des admins sérieux emploient une commande qui ne leur dit pas tout ce qu’ils voudraient savoir.
find -maxdepth 1 \! -iname '.' -type d
est une commande simple qui me donne vraiment ce que je veux :
-cherche ( à partir du rep courant ) sans descendre dans les sous-répertoires et en excluant le fichier ‘.’ : tous les fichiers qui soient de type répertoire
Comment faire + simple ?
En plus c’est rapide parce qu’on ne descent pas dans les sous-rép.
Je me demande seulement pourquoi cette commande ne me sort pas le rép parent ‘…’ , parce qu’il ne faut pas croire que ce soit là l’oeuvre de :
\! -iname '.'
qui demande uniquement que le fichier ‘.’ ne fasse pas partie des élus ( parce que j’en veux pas de ‘.’ )
Mais ça tombe bien j’en veux pas non plus du ‘…’
ls -a|grep '\.$'
.
..
find -maxdepth 1 |grep '\.$'
.
find -maxdepth 1 -name '..'
Bon, ces petits essais (une première pour moi) montrent que par défaut find ne sort pas ‘…’ , c’est trés bien comme ça. Et c’est logique en fait.
Une fois que j’ai sélectionné mes fichiers avec find je peux passer à l’étape suivante avec du , puis enchaîner avec ton awk. Ça ça me plait bien parce que c’est clair, fiable et simple. Merci encore pour tes exemples et explications : ça m’est bien utile !
Bon, Morphée s’impatiente, il ne faut pas la faire attendre … sinon gare
Il n’y a pas grand chose parce que tu n’y as rien mis…
Nous t’attendions…
Edit: Parce que ce que vous postez ici est perdu… noyé dans le forum.
Centralisé sur le Wiki l’information est facilement accessible et utile au plus grand nombre.
Les bébés chats (tu ne connais pas ce mème ?).
[quote=“Rantanplan aussi !”][quote]du -Dsh * .*
du -Dsh * .* | sort -rh[/quote]
Ben non, parce que comme je te le disais + haut ça me sort aussi .bashrc par exemple (dont je n’ai cure lorsque je cherche à savoir quel rép. prends de la place )
Le pire c’est que .* fait redescendre dans le répertoire parent ![/quote]
Mal testé désolé. bash et zsh se comportent différement.
[quote=“Rantanplan aussi !”]Non, décidemment, j’aime pas ces * .* et autre globbing machin chose imprévisibles ! je reste sur mon find et mes regex qui sont fiables (enfin pour moi) et j’embauche ton awk pour finir élégament le travail de du : ça c’est du bon job d’équipe. En tout cas je ne vais pas m’enregistrer sur univers-libre.net/index.php/2010 … -dun-du-h/
juste pour aller leur dire que leur commande ne permet pas de connaitre la taille des rép .cachés … et que je doute que des admins sérieux emploient une commande qui ne leur dit pas tout ce qu’ils voudraient savoir.
find -maxdepth 1 \! -iname '.' -type d
est une commande simple qui me donne vraiment ce que je veux :
-cherche ( à partir du rep courant ) sans descendre dans les sous-répertoires et en excluant le fichier ‘.’ : tous les fichiers qui soient de type répertoire
Comment faire + simple ?
Je me demande seulement pourquoi cette commande ne me sort pas le … parce qu’il ne faut pas croire que ce soit là l’oeuvre de :
\! -iname '.'
qui demande simplement que le fichier ‘.’ ne fasse pas partie des élus ( parce que j’en veux pas de . )
Mais ça tombe bien j’en veux pas non plus du ‘…’
ls -a|grep '\.$'
.
..
find -maxdepth 1 |grep '\.$'
.
find -maxdepth 1 -name '..'
Bon, ces petits essais (une première pour moi) montrent que par défaut find ne sort pas … , c’est trés bien comme ça. Et c’est logique en fait.
Une fois que j’ai sélectionné mes fichiers avec find je peux passer à l’étape suivante avec du , puis enchaîner avec ton awk. Ça ça me plait bien parce que c’est clair, fiable et simple. Merci encore pour tes exemples et explications : ça m’est bien utile !
Bon, Morphée s’impatiente, il ne faut pas la faire attendre … sinon gare [/quote]
Perso j’utilise find que quand j’ai besoin de performance (avec un pipe est une action “lourde” pour chaque fichier derrière).
Du coup si je veux tout les fichiers du répertoire courant (pas de dossier, fichier caché ou non) :
du *(.D)
Si je veux pas les fichier cachés :
du *(.)
Si je ne veux que les répertoires cachés ou non :
du *(/D)
Si je ne veux pas les dossiers cachés :
du *(/)
C’est pas forcément très intuitif au début, mais dès que tu as pris le plis il n’y a plus de problème. Pour des condition plus complexes il y a aussi (j’ai le droit d’exécuter le fichier, le fichier m’appartiens, etc).
[quote=“lol”]Il n’y a pas grand chose parce que tu n’y as rien mis…
Nous t’attendions… [/quote]
On est bien d’accord ! D’un autre coté j’ai peut-être tord mais je m’en sers jamais du Wiki (je fais rien de bien compliqué ), alors je le connais pas,je vais tâcher de le fréquenter un peu dans un premier temps, mais quand ?
Une simple recherche google: nettoyage debian, donne ça google.fr/#hl=fr&cp=9&gs_id= … 24&bih=444
Yes, faut peut-être juste créer un fil concernant le problème du Wiki, peut-être qu’il y en a qui ont de bonnes idées ? Parce que je crois que ce pb de Wiki se retrouve sur tous les sites ? ou je me trompe ? si c’est le cas faut se poser des questions (j’en sais rien, j’y connais rien à tout ça)
Bon, j’enfiles mes palmes, mon maillot de bain, mon tubas, je saute dans un avion (dans cette tenue) et j’arrive à Mada, ya du bon soleil et des gens souriants là bas, rouspète pas trop!
Les bébés chats (tu ne connais pas ce mème ?).[/quote]
Jamais entendu parler (ou j’avais la tête dans les nuages comme d’hab) ! ya des tas de trucs qui se font sans que je sois tenu au courant, apparemment ! y s’exagèrent quand même !
[quote=“MisterFreez”]
Perso j’utilise find que quand j’ai besoin de performance (avec un pipe est une action “lourde” pour chaque fichier derrière).
Du coup si je veux tout les fichiers du répertoire courant (pas de dossier, fichier caché ou non) :
du *(.D)
Si je veux pas les fichier cachés :
du *(.)
Si je ne veux que les répertoires cachés ou non :
du *(/D)
Si je ne veux pas les dossiers cachés :
du *(/)
C’est pas forcément très intuitif au début, mais dès que tu as pris le plis il n’y a plus de problème. Pour des condition plus complexes il y a aussi (j’ai le droit d’exécuter le fichier, le fichier m’appartiens, etc).[/quote]
Bon excuses moi, c’est vraiment pas pour t’embêter, sérieux, mais même le shell trouve pas ça intuitif :
[code]du *(.D)
du: impossible d’accéder à « *(.D) »: Aucun fichier ou dossier de ce type
$ du *(.)
du: impossible d’accéder à « *(.) »: Aucun fichier ou dossier de ce type
$ du *(/D)
du: impossible d’accéder à « *(/D) »: Aucun fichier ou dossier de ce type
$ du *(/)
du: impossible d’accéder à « *(/) »: Aucun fichier ou dossier de ce type
[/code]
Je sens que tu vas devoir subir la punition promise par Ricardo
Tu vas trouver que je suis têtu peut-être mais au moins mon find fonctionne, action lourde ou pas, et en plus je ne me pose pas de question et c’est réglé.
Par ailleurs je n’ai aucune idée des temps d’exécution pour les performances etc…, je suis comme un gamin qui a quelques jouets qu’il aime bien et qui ne veut pas en changer pour d’autres, mais il y a ce jouet qui me plait bien : awk mais j’ai jamais le temps de m’amuser avec, grrrr
Ciao byby
Salut Rantanplan,
[quote]
Yes, faut peut-être juste créer un fil concernant le problème du Wiki[/quote]
[quote=“ggoodluck47”]Salut Rantanplan,
[quote]
Yes, faut peut-être juste créer un fil concernant le problème du Wiki[/quote]
debian-fr.org/wiki-t25401.html[/quote]
Bonsoir ggoodluck47
Yes ! je suis un peu jeune ici et sur les forums en général : je ne connais pas en fait, malgrés mes 11 ans d’internet j’ai jamais participé, je suis trop timide
Houlala, tout ça à lire, ça me met en joie
Hmmm … même pas encore eu le temps d’étudier les solutions de MisterFreez (juste survolées et testées).
Mais ça fait trop longtemps qu’awk attend, et je constate dans ce fil que ça m’handicape sérieusement de ne pas l’avoir dans ma boite à jouets … le Wiki patientera bien encore un peu, aprés tout ça ne fait qu’un mois et quelques bidules que je vous lis finalement (et avec beaucoup de plaisir ), je ne vais pas tout de même pas culpabiliser !
Ciao byby
Salut MisterFreez,
J’ai enfin étudié ton élégante solution, elle m’a montrée les énormes erreurs que j’ai commises pour élaborer ma fameuse “commande”. Je ne devais pas avoir les idées claires ! ( Franchement on pourrait penser que j’avais bu ! mais non pas du tout )
Voici ce que j’arrive finalement à obtenir en combinant mktemp, find, du, sed, for, sort et rm. Finalement awk n’est pas nescessaire (mais pourquoi pas), ce qui l’est c’est de réfléchir correctement …
Je laisse ma première “commande” inchangée (puisqu’elle fonctionne quand même) de façon à ce que tes remarques qui ont suivies restent pertinentes.
fichier=$(mktemp) ; find -L -maxdepth 1 \! -iname '.' -type d -exec du -Dhs '{}' \; | sed 's@^\(.*[[:digit:]]\+\)\([KMG]\)@\1\t\2io@' > ${fichier} ; for unit in G M K ; do sed -n "/${unit}io/p" ${fichier} |sort -gr ; echo ; done ; rm ${fichier}
Ça donne ça sur ma squeeze :
30 Gio ./documents
... Gio ...
3,1 Gio ./musique
1,4 Gio ./.icedove
149 Mio ./ceci
110 Mio ./cela
... Mio .......
1,4 Mio ./.gconf
956 Kio ./.local
... Kio ...
4,0 Kio ./Documents
C’est infiniment + joli. Merci pour ton apport, ça fait un bail que j’ai pas vraiment codé …
Salut