no save
Assistance
Achat
News

FAQ | Bash

Suppression impossible : liste d'arguments trop longue
Publié par Jeff, dernière mise à jour mar. 17 nov. 2009 à 19:43:13 par marlalapocket

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 longoubash: /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 perlperl -e 'for(</home/lami20j/*.toto>){unlink}'
Version Web
Réalisé par RedShift
no save