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";

Répondre à