On Sat, 05 Oct 2002 22:15:13 +0200
Rosaire AMORE <[EMAIL PROTECTED]> wrote:
> Ah ben moi aussi je bloque l�, et je suis preneur. Honn�tement, � part jipe, je ne
>vois pas qui peut
> nous sortir de cette merde...
> � bon entendeur, bonne nuit
> R.
>
> Claude MICOUIN wrote:
> > Le Samedi 5 Octobre 2002 08:13, Rosaire AMORE a �crit :
> >
> >
> >>>2) �a risque de bloquer s'il y a des espaces dans tes noms de fichiers et
> >>>de r�pertoire. (en cas tu remplaces les blancs par des _)
> >>>
> >>je pense que faire pr�c�der l'espace par un "\" doit faire l'affaire
> >>
> > Le probl�me, c'est quand l'espace est dans un sous r�pertoire du r�pertoire
> > de ta ligne de commande.
> > Par exemple, si dans le r�pertoire de recherche /chemin/ il y a un r�pertoire
> > (des fois � plusieurs niveaux en dessous) qui s'appelle /mon r�pertoire,
> > c'est find qui va te le d�busquer et tu ne pourras pas y mettre de caract�res
> > d'�chappement. Donc, il faut qu'ils y soient dans ta ligne de commande.
> >
> > Exemple: Je voudrais afficher la liste de tous les fichiers contenus dans
> > toutes les archives rpm d'un CD. Je fais:
> > find /mnt/cdrom -type f -name *rpm -exec rpm -pq --filesbypkg {} \;
> > R�sultat, aucun pb si aucun des r�pertoires ou des fichiers du CD ne
> > comportent d'espace. Sinon, j'ai �a:
> > error: open of /mnt/cdrom En failed: Aucun fichier ou r�pertoire de ce type
> > error: open of /mnt/cdrom En failed: Aucun fichier ou r�pertoire de ce type
> > etc, etc,...
> >
> > En --> /En vrac/
> > Voili, voilou. C'est un cas r�el et si quelqu'un a la solution, je suis
> > preneur.
> > A+
> >
> >
> >
find n'y est pour rien (pour une fois!) c'est rpm qui fout le bousin! il refuse les
noms avec espace. m�me en changeant le s�parateur de champs IFS. une solution, pas
tr�s �l�gante, est de s�parer le nom du rpm du r�pertoire qui le contient (s�lection
d'une partie de la cha�ne de caract�res de $i apr�s comptage) et de faire un cd dans
ce r�pertoire avant de lancer rpm sur le nom du rpm (basename). et bien sur, on rep�re
le r�pertoire de d�part pour s'y repositionner � chaque fois, sinon erreur. ou on
donne un chemin absolu � find et on revient au r�pertoire de d�part seulement � la
fin. (apr�s done). y'a certainement plus �l�gant, mais c'est tout ce que j'ai sous la
main apr�s une journ�e de garde... suis crev� moi! :-/
a=$PWD
for i in $(find /chemin/ -type f -name *.rpm)
do
b=${#i}
c=$(basename $i)
c=${#c}
cd ${i:0:$((b-c))}
rpm -pq --filesbypkg $(basename $i)
cd $a
done
on peut taper �a sur une seule ligne en s�parant les lignes pr�c�dentes avec un ;
bye
jipe
Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft?
Rendez-vous sur "http://www.mandrakestore.com"