[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