Re: [HS Debian] rm : liste d'arguments trop longue
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
>
>
:)
Reply to: