Suppression impossible : liste d'arguments trop longue

Décembre 2016


Suppression impossible : liste d'arguments trop longue


Finalité


Je souhaite supprimer des fichiers (par exemple tous les fichiers d'extension .toto) dans un répertoire mais la commande "rm *.toto" me renvoie :
bash: /bin/rm: Argument list too long
ou
bash: /bin/rm: Liste d'arguments trop longue

Causes


Ceci est dû à une limitation de la commande rm, qui ne permet pas de gérer un grand nombre d'arguments (le joker '*' est développé par le shell en une série d'arguments).

Solutions


Commande xargs


La solution consiste à envoyer successivement chaque argument à rm à l'aide de la commande xargs, selon une des façons suivantes :
ls *.toto | xargs rm
find . -type f -name \*.toto | xargs rm

Commande find


Une seconde solution consiste à utiliser la commande find et le paramètre -exec :
find . -name "*.toto" -exec rm {} \;

Boucle for (bash)


Une autre alternative consiste à exécuter une boucle en script shell :
for i in `seq 0-9`a b c d e f g h i j k l m n o p q r s t u v w x y z ; do rm $i*.toto ; done

Programme Perl


encore une solution avec perl
perl -e 'for(</home/lami20j/*.toto>){unlink}'

A voir également :

Ce document intitulé «  Suppression impossible : liste d'arguments trop longue  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.