Steve a écrit :
Le vendredi 23 mars 2007 18:28, Sylvain Sauvage a écrit :
Steve, vendredi 23 mars 2007, 18:13:48 CET
Bonsoir,
'soir,
J'ai un répertoire contenant 10G de données réparties en petit
fichier (genre 50 ko, donc ça fait *beaucoup* de fichiers). Je
désire effacer tous les fichiers. Mais :
$ rm *
bash: /bin/rm: Liste d'arguments trop longue
[...]
Enfin ! Donc le nombre d'arguments est au plus de 5982. Ce qui
me mène à me poser deux questions :
1- quelle est le nombre maximal ? comment le trouver ?
C'est plus la taille (en caractères) que le nombre.
donc, si je comprends bien, si j'ai par exemple 3 fichier de 5 caractères de
long chacun, le * aurait 15 caractères (sans compter les espaces) et c'est
cette longueur qui est limitée à quelque chose de plus petit que mon 5982 (vu
que là c'est le nombre de fichiers, qui font eux au moins un caratère de
long). (j'espère que c'est clair pour tout le monde...)
Pour connaître cette limite, tu peux lire les sources de bash...
Quelle bonne idée, je n'avais rien à faire ce soir ;-) Même pas une
petite
idée (en passant) ?
2- comment m'en affranchir dans mon cas ?
Les tubes n'ont pas ce genre de limite :
ls | xargs rm
$ ls 31* | xargs rm
bash: /bin/ls: Liste d'arguments trop longue
rm: opérande manquante
le caractere * est remplacé par bash lui-meme donc quand tu fait ls 31*
bash execute reellement ls 31123 312334 31345 .. c'est pour cela
qu'il t'envoi dans les choux donc quelque chose comme ls | grep ^31 |
xargs rm devrait fonctionner
ou
find . -type f -print0 | xargs -0 rm
si des espaces se cachent dans les noms de fichiers.
ça rm, on dirait ...
Merci pour vos réponses et bonne fin de semaine.
Itou.
Merci
:)
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et
Reply-To:
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]