J'ai créé un petit service sur le net qui permet de stocker de façon
éphémere des images ou des fichiers sur le net ( cjoint.com)
Tant que ce truc était peu connu tout marchait bien. Maintenant, j'ai du
dépasser une limite car ma commande :
-----------
find [chemin d'acces]/*.* -maxdepth 1 -type f -mmin +20160 -print | xargs rm
-----------
me rend "Argument list too long"
Le web ne m'aide pas beaucoup sur ce coup car il est dit partout "...quand
vous avez le message "Argument list too long", utilisez la commande find..."
Bon ;-)) Que puis-je faire dans un "cron" quotidien pour vider mes fichiers
qui ont plus de 15 jours ( plusieurs dizaines de milliers...) et ce, de
façon fiable ?
J'ai créé un petit service sur le net qui permet de stocker de façon éphémere des images ou des fichiers sur le net ( cjoint.com) Tant que ce truc était peu connu tout marchait bien. Maintenant, j'ai du dépasser une limite car ma commande : ----------- find [chemin d'acces]/*.* -maxdepth 1 -type f -mmin +20160 -print | xargs rm ----------- me rend "Argument list too long"
Le web ne m'aide pas beaucoup sur ce coup car il est dit partout "...quand vous avez le message "Argument list too long", utilisez la commande find..." Bon ;-)) Que puis-je faire dans un "cron" quotidien pour vider mes fichiers qui ont plus de 15 jours ( plusieurs dizaines de milliers...) et ce, de façon fiable ?
L'option -n <num> de la commande xargs permet de ne passer à la commande qui suit que le nombre num d'arguments. En clair, si on exécute xargs rm, il n'y aura qu'une commande rm avec tous les arguments résultats du find ==> line too long si on passe xargs -n 10, il y aura autant de commandes rm que nécessaires avec 10 arguments par commande ===> plus de line too long
Ainsi, chaque ligne rm générée ne dépasse plus la longueur max.
Faire quelques essais en ajoutant echo entre xargs et rm rm permet de voir ce que donnera la commande.
Bonsoir,
J'ai créé un petit service sur le net qui permet de stocker de façon
éphémere des images ou des fichiers sur le net ( cjoint.com)
Tant que ce truc était peu connu tout marchait bien. Maintenant, j'ai du
dépasser une limite car ma commande :
-----------
find [chemin d'acces]/*.* -maxdepth 1 -type f -mmin +20160 -print | xargs rm
-----------
me rend "Argument list too long"
Le web ne m'aide pas beaucoup sur ce coup car il est dit partout "...quand
vous avez le message "Argument list too long", utilisez la commande find..."
Bon ;-)) Que puis-je faire dans un "cron" quotidien pour vider mes fichiers
qui ont plus de 15 jours ( plusieurs dizaines de milliers...) et ce, de
façon fiable ?
L'option -n <num> de la commande xargs permet de ne passer à la commande
qui suit que le nombre num d'arguments.
En clair,
si on exécute xargs rm, il n'y aura qu'une commande rm avec tous les
arguments résultats du find ==> line too long
si on passe xargs -n 10, il y aura autant de commandes rm que
nécessaires avec 10 arguments par commande ===> plus de line too long
Ainsi, chaque ligne rm générée ne dépasse plus la longueur max.
Faire quelques essais en ajoutant echo entre xargs et rm rm permet de
voir ce que donnera la commande.
J'ai créé un petit service sur le net qui permet de stocker de façon éphémere des images ou des fichiers sur le net ( cjoint.com) Tant que ce truc était peu connu tout marchait bien. Maintenant, j'ai du dépasser une limite car ma commande : ----------- find [chemin d'acces]/*.* -maxdepth 1 -type f -mmin +20160 -print | xargs rm ----------- me rend "Argument list too long"
Le web ne m'aide pas beaucoup sur ce coup car il est dit partout "...quand vous avez le message "Argument list too long", utilisez la commande find..." Bon ;-)) Que puis-je faire dans un "cron" quotidien pour vider mes fichiers qui ont plus de 15 jours ( plusieurs dizaines de milliers...) et ce, de façon fiable ?
L'option -n <num> de la commande xargs permet de ne passer à la commande qui suit que le nombre num d'arguments. En clair, si on exécute xargs rm, il n'y aura qu'une commande rm avec tous les arguments résultats du find ==> line too long si on passe xargs -n 10, il y aura autant de commandes rm que nécessaires avec 10 arguments par commande ===> plus de line too long
Ainsi, chaque ligne rm générée ne dépasse plus la longueur max.
Faire quelques essais en ajoutant echo entre xargs et rm rm permet de voir ce que donnera la commande.
Nicolas George
Zobelier wrote in message <424ab466$:
En clair, si on exécute xargs rm, il n'y aura qu'une commande rm avec tous les arguments résultats du find ==> line too long
C'est faux. xargs s'arrête toujours avant la limite de la taille maximale d'une ligne de commande.
Le problème ici était le glob *.*, qui rendait la ligne de commande de find lui-même trop longue.
Zobelier wrote in message <424ab466$1@news.sncf.fr>:
En clair,
si on exécute xargs rm, il n'y aura qu'une commande rm avec tous les
arguments résultats du find ==> line too long
C'est faux. xargs s'arrête toujours avant la limite de la taille maximale
d'une ligne de commande.
Le problème ici était le glob *.*, qui rendait la ligne de commande de find
lui-même trop longue.