Menu
Donnez votre avis

Suppression impossible : liste d'arguments trop longue

Posez votre question

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

Ajouter un commentaire

Commentaires

Commenter la réponse de Utilisateur anonyme
Shell - Créer un fichier vide