Si une erreur de liste d'arguments trop longue se produit lors de l'exécution d'une commande shell, la raison en est qu'il y a trop de fichiers cibles à traiter, par exemple, plus de 20 000 fichiers.
La solution consiste à traiter les fichiers cibles par lots ou même un par un.
1. commande grep
Exécution en ligne de commande :
grep "Java" * -l
S'il revient :
zsh: argument list too long: grep
Commande changée en :
ls | xargs -n 100 grep "Java" -l
Explication : Le paramètre -n indique le nombre d'éléments de données exécutés dans chaque lot.
2. commande cp
Exécution en ligne de commande :
cp -r *.zip ../result/
S'il revient :
zsh: argument list too long: cp
Commande changée en :
find . -name "*.zip" -exec cp {} ../result/ \;
3. commande rm
Exécution en ligne de commande :
rm -f *.zip
S'il revient :
zsh: argument list too long: rm
Remplacez la commande par l'une des commandes suivantes :
ls *.zip | xargs rm -f
find . -name "*.zip" -exec rm -f {} \;