tris d'une taille [shell] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 30-08-2007 à 08:36:48
coolben a écrit : Une idèe ? |
retirer le -h ...
Marsh Posté le 31-08-2007 à 07:29:48
merci pour ta réponse mais ca ne fais que rajouter Ko a toutes les lignes.
Ca reviens a faire un : du -s * | sort -n
Pas d'autres idées ?
Marsh Posté le 31-08-2007 à 07:57:33
Ben je vois pas trop comment la commande "sort" pourrait comprendre que tu veux trier d'abord les Ko, puis les Mo et enfin les Go ...
Elle est bête la commande, elle voit par exemple:
15Go
950Mo
300Ko
Et tu lui dit de trier selon les chiffres ... forcément, elle va te donner ça:
15Go
300Ko
950Mo
Après, si tu veux qqch de vraiment aboutit, ben faut coder ça toi même
Marsh Posté le 01-09-2007 à 23:33:41
Et ne serait il pas possible d'afficher une colonne supplémentaire a la sortie de du.
Je m'explique, la première , la taille en byte (option -b) et la deuxième au format humain (option -h )
Marsh Posté le 02-09-2007 à 13:00:05
#
### Affichage "du" en 3 colonnes :
### octets - Ko|Mo - Repertoire
#
du -h > duh.tmp
du -b > dub.tmp
join -1 2 -2 2 -o 2.1,1.1,1.2 duh.tmp dub.tmp | \
sort -k1,1n | \
awk '{printf("%15s : %-8s%s\n",$1,$2,$3)}'
rm duh.tmp dub.tmp
Marsh Posté le 02-09-2007 à 13:10:33
Sinon tu peux te faire un petit script qui va reformater la sortie d'un "du -sb | sort -n" pour une lecture "Humaine".
Exemple en Python :
Code :
|
Puis :
$ du -bs * | sort -n | /tmp/sort.py
Marsh Posté le 02-09-2007 à 13:21:03
Bah pas besoin de sortir du python
Le "du -s | sort -n" trie pour nous, on peut récupérer la liste triée avec cut, et on peut filer plusieurs arguments à "du -h"..... d'où :
du -sh $(du -s * | sort -n | cut -f 2) |
Marsh Posté le 02-09-2007 à 13:31:28
Ca marche pas pour les noms de repertoires qui contiennent des espaces
Marsh Posté le 02-09-2007 à 13:52:42
e_esprit a écrit : Ca marche pas pour les noms de repertoires qui contiennent des espaces |
ok ok je rajoute un while :
du -s * | sort -n | cut -f 2 | while read r; do du -sh "$r"; done |
mais là tu vois, c'est moins beau... et c'est de ta faute
Marsh Posté le 02-09-2007 à 14:00:42
Ok, je plaide coupable
Mais au moins ca marche
Marsh Posté le 02-09-2007 à 15:16:17
Xavier_OM a écrit :
|
Ouais, mais c'est un peu overkill de faire le 'du' en double...
Je penche pour une solution scriptée comme e_esprit. (mais perso je l'aurais plutôt fait en perl...)
Marsh Posté le 04-09-2007 à 14:26:22
franceso a écrit : Ouais, mais c'est un peu overkill de faire le 'du' en double... |
ou en sed
du -s * | sort -n | sed -e 's/^\([0-9]\+\)[0-9][0-9][0-9]\([ \t].*\)/\1M\2/g' |
Du coup c'est plus overkill, un seul "du" et ni perl ni python
Marsh Posté le 11-09-2007 à 08:30:32
ReplyMarsh Posté le 11-09-2007 à 10:00:02
matafan a écrit : Mais ca suppose qu'un mega c'est 1000 kilo. |
c'est sûr que niveau précision de calcul les regexp on a vu mieux
un peu de awk ?
du -s * | sort -n | awk -F '\t' '{ |
Marsh Posté le 30-08-2007 à 08:30:51
Bonjour
J'aimeria pourvoir trier la sortie de cette commande :
du -hs *
En utilisant sort -n comme ci dessous, la lettre réprésentant l'unité n'est pas prise en compte (k, M ,G ...)
du -hs * | sort -n
Une idèe ?