En faisant le ménage sur une machine, je tombe sur un répértoire de logs
qui contient beaucoup de fichiers, tous inutiles. Après vérification, je
fais donc un brutal rm. Et là...
$ rm *
bash: /bin/rm: Argument list too long
Argh, damned. Je savais qu'il y avait *beaucoup* de fichiers, mais à ce
point !!
(je ne compterais pas le détail, parce que la machine est lente et
vieille, et il met déjà assez de temps à tourner comme ça sans que j'en
rajoute...)
Je suis donc en train d'effacer les fichiers par paquets (rm log.249.*,
puis rm log.250.*, etc.), ce qui marche, mais bon, faut que j'ai déjà une
idée du nom des fichiers.
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer
d'un coup ?
Et au passage et par curiosité (et pour me donner une idée du nombre de
fichiers que j'ai !), c'est combien cette limite ?
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."
En faisant le ménage sur une machine, je tombe sur un répértoire de logs qui contient beaucoup de fichiers, tous inutiles. Après vérification, je fais donc un brutal rm. Et là...
$ rm * bash: /bin/rm: Argument list too long
Argh, damned. Je savais qu'il y avait *beaucoup* de fichiers, mais à ce point !!
(je ne compterais pas le détail, parce que la machine est lente et vieille, et il met déjà assez de temps à tourner comme ça sans que j'en rajoute...)
Je suis donc en train d'effacer les fichiers par paquets (rm log.249.*, puis rm log.250.*, etc.), ce qui marche, mais bon, faut que j'ai déjà une idée du nom des fichiers.
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer d'un coup ?
soit un rm -r du repertoire (et tu recrée le rep apres) soit, dans le rep :
find . -type f -print0 | xargs -0 rm -f --
(si find/xargs pas "gnu" remplacer le print0 par print et enlever le 0 en priant pour qu'il n'y ai pas de noms de fichiers alakon)
Et au passage et par curiosité (et pour me donner une idée du nombre de fichiers que j'ai !), c'est combien cette limite ?
Remi Moyen wrote:
Salut,
En faisant le ménage sur une machine, je tombe sur un répértoire de logs
qui contient beaucoup de fichiers, tous inutiles. Après vérification, je
fais donc un brutal rm. Et là...
$ rm *
bash: /bin/rm: Argument list too long
Argh, damned. Je savais qu'il y avait *beaucoup* de fichiers, mais à ce
point !!
(je ne compterais pas le détail, parce que la machine est lente et
vieille, et il met déjà assez de temps à tourner comme ça sans que j'en
rajoute...)
Je suis donc en train d'effacer les fichiers par paquets (rm log.249.*,
puis rm log.250.*, etc.), ce qui marche, mais bon, faut que j'ai déjà une
idée du nom des fichiers.
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer
d'un coup ?
soit un rm -r du repertoire (et tu recrée le rep apres)
soit, dans le rep :
find . -type f -print0 | xargs -0 rm -f --
(si find/xargs pas "gnu" remplacer le print0 par print et enlever le 0
en priant pour qu'il n'y ai pas de noms de fichiers alakon)
Et au passage et par curiosité (et pour me donner une idée du nombre de
fichiers que j'ai !), c'est combien cette limite ?
En faisant le ménage sur une machine, je tombe sur un répértoire de logs qui contient beaucoup de fichiers, tous inutiles. Après vérification, je fais donc un brutal rm. Et là...
$ rm * bash: /bin/rm: Argument list too long
Argh, damned. Je savais qu'il y avait *beaucoup* de fichiers, mais à ce point !!
(je ne compterais pas le détail, parce que la machine est lente et vieille, et il met déjà assez de temps à tourner comme ça sans que j'en rajoute...)
Je suis donc en train d'effacer les fichiers par paquets (rm log.249.*, puis rm log.250.*, etc.), ce qui marche, mais bon, faut que j'ai déjà une idée du nom des fichiers.
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer d'un coup ?
soit un rm -r du repertoire (et tu recrée le rep apres) soit, dans le rep :
find . -type f -print0 | xargs -0 rm -f --
(si find/xargs pas "gnu" remplacer le print0 par print et enlever le 0 en priant pour qu'il n'y ai pas de noms de fichiers alakon)
Et au passage et par curiosité (et pour me donner une idée du nombre de fichiers que j'ai !), c'est combien cette limite ?
Fabrice..Bacchella
On Fri, 23 Apr 2004 15:23:35 +0200, JustMe wrote:
(si find/xargs pas "gnu" remplacer le print0 par print et enlever le 0 en priant pour qu'il n'y ai pas de noms de fichiers alakon)
ls | sed 's/.*/"&"/' | xargs rm $KAKOU
AVEC KAKOU="-f -r" pour les courageux.
--- http://fba.homeip.net
On Fri, 23 Apr 2004 15:23:35 +0200, JustMe <pasdesp@m.merci> wrote:
(si find/xargs pas "gnu" remplacer le print0 par print et enlever le 0
en priant pour qu'il n'y ai pas de noms de fichiers alakon)
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer d'un coup ?
find . -name log.* -print|xargs rm
J'avais pas pensé au passage par xargs.
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste d'arguments trop longue, en quoi le fait de traiter cette liste par xargs va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier sorti par rm, mais je ne crois pas que ce soit le comportement de xargs (je suis même sûr du contraire !).
Et au passage et par curiosité (et pour me donner une idée du nombre de fichiers que j'ai !), c'est combien cette limite ?
Pour avoir le nombre de fichiers : ls|wc -l
Ben oui, mais non : vu la lenteur de ma machine (d'autant plus que le disque est saturé, justement à cause de tout ces fichiers) et vu le nombre de fichiers, le ls dure. Longtemps. Et même un peu plus que ça.
Comme j'ai pas envie d'attendre 10 min que le ls finisse (et le wc ensuite -- quoique, n'affichant pas les noms, ça devrait aller plus vite), je voudrais savoir en gros quelle est cette limite.
Surtout que je suis (enfin, j'étais, j'ai déjà nettoyé pas mal de choses) largement au dessus de cette limite, puisque certaines sous catégories (genre log.252*) me renvoyaient le même message d'erreur. -- Rémi Moyen "Malgré les apparences, le temps est très varié à Nancy : pluie, nuages, neige, brouillard, grêle, ..."
On Fri, 23 Apr 2004, Erwan David wrote:
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer
d'un coup ?
find . -name log.* -print|xargs rm
J'avais pas pensé au passage par xargs.
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste
d'arguments trop longue, en quoi le fait de traiter cette liste par xargs
va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier
sorti par rm, mais je ne crois pas que ce soit le comportement de xargs
(je suis même sûr du contraire !).
Et au passage et par curiosité (et pour me donner une idée du nombre de
fichiers que j'ai !), c'est combien cette limite ?
Pour avoir le nombre de fichiers : ls|wc -l
Ben oui, mais non : vu la lenteur de ma machine (d'autant plus que le
disque est saturé, justement à cause de tout ces fichiers) et vu le nombre
de fichiers, le ls dure. Longtemps. Et même un peu plus que ça.
Comme j'ai pas envie d'attendre 10 min que le ls finisse (et le wc ensuite
-- quoique, n'affichant pas les noms, ça devrait aller plus vite), je
voudrais savoir en gros quelle est cette limite.
Surtout que je suis (enfin, j'étais, j'ai déjà nettoyé pas mal de choses)
largement au dessus de cette limite, puisque certaines sous catégories
(genre log.252*) me renvoyaient le même message d'erreur.
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer d'un coup ?
find . -name log.* -print|xargs rm
J'avais pas pensé au passage par xargs.
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste d'arguments trop longue, en quoi le fait de traiter cette liste par xargs va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier sorti par rm, mais je ne crois pas que ce soit le comportement de xargs (je suis même sûr du contraire !).
Et au passage et par curiosité (et pour me donner une idée du nombre de fichiers que j'ai !), c'est combien cette limite ?
Pour avoir le nombre de fichiers : ls|wc -l
Ben oui, mais non : vu la lenteur de ma machine (d'autant plus que le disque est saturé, justement à cause de tout ces fichiers) et vu le nombre de fichiers, le ls dure. Longtemps. Et même un peu plus que ça.
Comme j'ai pas envie d'attendre 10 min que le ls finisse (et le wc ensuite -- quoique, n'affichant pas les noms, ça devrait aller plus vite), je voudrais savoir en gros quelle est cette limite.
Surtout que je suis (enfin, j'étais, j'ai déjà nettoyé pas mal de choses) largement au dessus de cette limite, puisque certaines sous catégories (genre log.252*) me renvoyaient le même message d'erreur. -- Rémi Moyen "Malgré les apparences, le temps est très varié à Nancy : pluie, nuages, neige, brouillard, grêle, ..."
Erwan David
Remi Moyen écrivait :
On Fri, 23 Apr 2004, Erwan David wrote:
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer d'un coup ?
find . -name log.* -print|xargs rm
J'avais pas pensé au passage par xargs.
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste d'arguments trop longue, en quoi le fait de traiter cette liste par xargs va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier sorti par rm, mais je ne crois pas que ce soit le comportement de xargs (je suis même sûr du contraire !).
xargs ne fait pas un rm par fiuchier, mais un rm par paquet de fichiers, avec des paquets assez petits pour que ça passe.
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer
d'un coup ?
find . -name log.* -print|xargs rm
J'avais pas pensé au passage par xargs.
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste
d'arguments trop longue, en quoi le fait de traiter cette liste par xargs
va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier
sorti par rm, mais je ne crois pas que ce soit le comportement de xargs
(je suis même sûr du contraire !).
xargs ne fait pas un rm par fiuchier, mais un rm par paquet de
fichiers, avec des paquets assez petits pour que ça passe.
Est-ce que quelqu'un aurait une idée de comment faire pour tout effacer d'un coup ?
find . -name log.* -print|xargs rm
J'avais pas pensé au passage par xargs.
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste d'arguments trop longue, en quoi le fait de traiter cette liste par xargs va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier sorti par rm, mais je ne crois pas que ce soit le comportement de xargs (je suis même sûr du contraire !).
xargs ne fait pas un rm par fiuchier, mais un rm par paquet de fichiers, avec des paquets assez petits pour que ça passe.
-- Real programs don't eat cache
DINH Viêt Hoà
(si find/xargs pas "gnu" remplacer le print0 par print et enlever le 0 en priant pour qu'il n'y ai pas de noms de fichiers alakon)
à noter que -print0 dans find existe maintenant sur FreeBSD ainsi que sur Darwin.
-- DINH V. Hoa,
"Quel dieu cet homme !" -- FiLH
(si find/xargs pas "gnu" remplacer le print0 par print et enlever le 0
en priant pour qu'il n'y ai pas de noms de fichiers alakon)
à noter que -print0 dans find existe maintenant sur FreeBSD ainsi
que sur Darwin.
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste d'arguments trop longue, en quoi le fait de traiter cette liste par xargs va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier sorti par rm, mais je ne crois pas que ce soit le comportement de xargs (je suis même sûr du contraire !).
La fonction primaire de 'xargs' est justement de répondre à ce problème: 'xargs' construit une série de commandes dont la taille est juste à la limite sans jamais l'atteindre.
Si xargs appelait 'rm' pour chacun des fichiers, il ne servirait à rien. Dans ce cas, il suffirait d'utiliser l'option '-exec' de 'find'.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste
d'arguments trop longue, en quoi le fait de traiter cette liste par xargs
va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier
sorti par rm, mais je ne crois pas que ce soit le comportement de xargs
(je suis même sûr du contraire !).
La fonction primaire de 'xargs' est justement de répondre à ce problème:
'xargs' construit une série de commandes dont la taille est juste à la limite
sans jamais l'atteindre.
Si xargs appelait 'rm' pour chacun des fichiers, il ne servirait à rien. Dans
ce cas, il suffirait d'utiliser l'option '-exec' de 'find'.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Mais je ne comprends pas pourquoi ça marche : si le problème est une liste d'arguments trop longue, en quoi le fait de traiter cette liste par xargs va la raccourcir ? À moins que xargs ne fasse un appel à rm par fichier sorti par rm, mais je ne crois pas que ce soit le comportement de xargs (je suis même sûr du contraire !).
La fonction primaire de 'xargs' est justement de répondre à ce problème: 'xargs' construit une série de commandes dont la taille est juste à la limite sans jamais l'atteindre.
Si xargs appelait 'rm' pour chacun des fichiers, il ne servirait à rien. Dans ce cas, il suffirait d'utiliser l'option '-exec' de 'find'.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Thomas Nemeth
Le ven 23 avr 2004 à 15:15, Remi Moyen a tapoté : | Salut, | | En faisant le ménage sur une machine, je tombe sur un répértoire de logs | qui contient beaucoup de fichiers, tous inutiles. Après vérification, je | fais donc un brutal rm. Et là... | | $ rm * | bash: /bin/rm: Argument list too long
Perso, si j'en ai la possibilté, je fais : cd .. rm -rf répertoire mkdir répertoire
Thomas -- Apres les neo-liberaux, les neo-marxistes, je ne doute meme pas de l'existence des neo-capitalistes, neo-euros et neo-homos. On a meme droit aux neo Linuxiens sous Windows (n'est pas neo-con qui veut). -+- ST in GFA : Cherche jeu pour neo geo -+-
Le ven 23 avr 2004 à 15:15, Remi Moyen a tapoté :
| Salut,
|
| En faisant le ménage sur une machine, je tombe sur un répértoire de logs
| qui contient beaucoup de fichiers, tous inutiles. Après vérification, je
| fais donc un brutal rm. Et là...
|
| $ rm *
| bash: /bin/rm: Argument list too long
Perso, si j'en ai la possibilté, je fais :
cd ..
rm -rf répertoire
mkdir répertoire
Thomas
--
Apres les neo-liberaux, les neo-marxistes, je ne doute meme pas de
l'existence des neo-capitalistes, neo-euros et neo-homos. On a meme droit
aux neo Linuxiens sous Windows (n'est pas neo-con qui veut).
-+- ST in GFA : Cherche jeu pour neo geo -+-
Le ven 23 avr 2004 à 15:15, Remi Moyen a tapoté : | Salut, | | En faisant le ménage sur une machine, je tombe sur un répértoire de logs | qui contient beaucoup de fichiers, tous inutiles. Après vérification, je | fais donc un brutal rm. Et là... | | $ rm * | bash: /bin/rm: Argument list too long
Perso, si j'en ai la possibilté, je fais : cd .. rm -rf répertoire mkdir répertoire
Thomas -- Apres les neo-liberaux, les neo-marxistes, je ne doute meme pas de l'existence des neo-capitalistes, neo-euros et neo-homos. On a meme droit aux neo Linuxiens sous Windows (n'est pas neo-con qui veut). -+- ST in GFA : Cherche jeu pour neo geo -+-