Comment contourner la limitation de shell de 'Liste d'arguments trop longue'?


2

Comment puis-je contourner la limitation du shell bash de "Liste d'arguments trop longue" lors de l'utilisation de caractères génériques de nom de fichier qui correspondent à une tonne de fichiers dans / tmp /?

[my-centos4 tmp] rm -rf /tmp/myLocalFiles*
bash: /bin/rm: Argument list too long

Réponses:



3

C’est un peu plus simple que ce que jáquer avait suggéré:

find /tmp -name "myLocalFiles*" -delete

Ma recherche sur centos4 ne prend pas en charge l'option -delete.
WilliamKF

2
@ WilliamKF: Alors votre find probablement aussi ne supporte pas find ... -exec rm {} +
Dennis Williamson


2

Pour ceux qui ne peuvent pas utiliser -delete pour trouver une commande, cela fonctionne aussi:

find /tmp -name "myLocalFiles*" -print0 | xargs -0 rm -rf

1
de #bash channel: "xargs (1) est dangereux (cassé, exploitable, etc.) lors de la lecture d’entrée non délimitée par NUL. Si vous travaillez avec des noms de fichiers, utilisez find's -exec [command] {} + à la place ou -print0 | xargs -0 à condition que vous ne vous souciez pas de la portabilité et que vous aimiez faire un travail supplémentaire inutile. Sinon une belle for boucle."
Édouard Lopez

0

Vous pouvez utiliser des vins cmd

wine cmd
del "Z:\tmp\myLocalFiles*"
exit

L’expansion de Shell fonctionne très bien, mais elle présente certaines réserves. La convention Windows ne souffre jamais de ces problèmes, mais impose un devoir au programmeur. C'est probablement mieux, car l'auteur du shell ne peut pas savoir comment un programme attend ses données d'entrée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.