[SOLVED] [ssfr] Pfff, ls, awk et consorts

[ Thread Index | Date Index | More debianworld.org/shellscript-fr Archives ]


> steve a écrit :
> >>> Comment puis-je m'en sortir ?
> >>>
> >> Bonjour,
> >>
> >> Peut-être comme çà :
> >>
> >> du -sh --time --time-style=+"%x" *
> > 
> > Super, je n'avais pas du tout pensé à ces options (que je ne connaissais
> > pas). On se rapproche. Maintenant j'aimerai trier le résultat. 
> > 
> > D'abord par date, puis s'il y a conflit, par taille du répertoire. J'ai
> > essayé plusieurs trucs dont :
> > 
> > for i in "*"
> > do
> > 	du -sh --time=ctime --time-style=+"%d %B %Y" $i | sort -r --key=2
> > done
> > 
> > 
> > Mais ça ne le fait pas (complètement, certains répertoires ne sont pas
> > où ils devrait être), par exemple :
> > 
> > 4.3G		 27 mai 2009		repA 
> > 212M		 24 juin 2009		repB
> > 1.2G		 24 avril 2009		repC
> > 17M		 22 juillet 2009	repD	 
> > 4.0K		 21 juillet 2009	repE
> > 
> > Que fait repC entre repB et repD ? Aussi repE devrait être avant repD.
> > Je peux vivre avec ça, mais si l'on pouvait finasser ce serait parfait.
> > 
> 
> Le mieux est l'ennemi du bien mais bon...

Oui mais quand même ;-)

> Premièrement, je ne suis pas sûr que tu ais placé le "sort" au bon
> endroit. Les données resteront trièes par l'ordre de ta boucle "for"
> donc plutôt un truc comme :
> 
> for i in ...
>   du ...
> done | sort ...
> 
> mais malgré cela, ce ne sera pas ce que tu cherches. Je pense que tu
> dois passer par une étape intermédiaire du type :
> 
> du -sh --time=ctime --time-style=+"%Y%m%d %d %d %B %Y" qui va générer
> 
> une colonne supplémentaire te servant de clé que tu supprimeras ensuite
> avec un cut ou autres, en gros :

Merci pour l'idée de la colonne supplémentaire sur laquelle trier, c'est
ce qui me manquait.

> for i in "*"
> do
>   du -sh --time=ctime --time-style=+"%d %B %Y %Y%m%d "  *
> done | sort -n -k5 | cut -d' ' -f4 --complement
> 
> mais c'est pas très beau

Cela marchait presque mais je n'arrivais pas à supprimer la colonne
supplémentaire avec le cut. Je m'en suis sorti autrement :


for i in "*"
do
	du -sh --time=ctime --time-style=+"%Y%m%d %d %b %Y" $i
done | sort -n -k2 | awk '{print $1 "\t"$3,$4,$5,$6}' >> $FILE


Pour être honnête, awk n'a jamais été ma tasse de thé, mais il m'a
permis de m'en sortir.


Encore merci pour ton aide Thierry !

Bonne journée,
Steve



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/