On Mon, Aug 03, 2009 at 04:02:43PM +0200, Éric Seigne wrote: > Bonjour, > es-ce qu'il existe une commande rapide et efficace pour faire le > ménage dans un dossier plein de paquets .deb pour ne garder que ceux > dont les numéros de versions sont les plus récents ? > > Par exemple j'ai > > package_1.2.0-0_i386.deb > package_1.2.0-1_i386.deb > package_1.3.1-0_i386.deb > package_1.3.4-6_i386.deb > package_1.3.4-7_i386.deb > > et je ne veux garder que le dernier ... y a ça, sans se lancer dans > des outils de gestion de dépots ? > > Merci d'avance, > Éric #!/bin/sh dry_run= doit() { $dry_run "$@" } while test $# != 0; do case "$1" in -n) dry_run=echo ;; --) shift; break; ;; *) break ;; esac shift done if test $# != 1; then echo "usage: foo.sh <directory>" 2>&1 exit 1 fi cd "$1" for p in $(ls *.deb|sed -e 's/_.*//'|sort -u); do keep= for v in $(ls "${p}_"*".deb" | sed -e 's/^[^_]*_\([^_]*\)_[^_]*\.deb$/\1/'); do if test -z "$keep"; then keep=$v elif dpkg --compare-versions "$keep" gt "$v"; then doit rm -f "${p}_${v}_*.deb" else doit rm -f "${p}_${keep}_*.deb" keep=$v fi done done -- Intersec <http://www.intersec.com> Pierre Habouzit <pierre.habouzit@intersec.com> Tél : +33 (0)1 5570 3346 Mob : +33 (0)6 1636 8131 Fax : +33 (0)1 5570 3332 37 Rue Pierre Lhomme 92400 Courbevoie
Attachment:
signature.asc
Description: Digital signature