#1 Le 14/08/2008, à 09:07
- clahor
rm liste d'arguments trop élevé??(RESOLU)
bjr j'ai essayé de nettoyer en ligne de commande le dossier ~/.thumbnails/normal/*
je fais rm mon dossier le message d'erreur est celui indiqué plus haut
je fais ls -al mon dossier/* | xargs rm
pour passer les arguments 1 par 1 a rm
le message d'erreur est le meme (j'ai reussi en mode graphique mais j'aimerais comprendre)
merci d'avance a tous
ps: j'ai trouvé ça sur le net
http://www.commentcamarche.net/faq/sujet-625-suppression-impossible-liste-d-arguments-trop-longue
mais cette solution
ls -al mon dossier/* | xargs rm
ne fonctionne pas ??
Dernière modification par clahor (Le 14/08/2008, à 13:25)
Hors ligne
#2 Le 14/08/2008, à 09:27
- Epehj
Re : rm liste d'arguments trop élevé??(RESOLU)
Salut,
Je pense que c'est le -l du ls qui est en trop
ls -l renverra à xargs "toute" la description du fichier ("drwx------ 2 epehj epehj 765952 2008-08-06 21:06 normal"), alors que rm attend juste le nom du fichier à supprimer.
Linux user #447629 - Ubuntu user # 21770
C'est en sciant que Léonard devint scie
Hors ligne
#3 Le 14/08/2008, à 10:32
- Totor
Re : rm liste d'arguments trop élevé??(RESOLU)
effectivement, le -l provoque l'erreur du xargs car il renvoie des informations inutiles.
Par ailleurs, ton rm ~/.thumbnails/normal/* provoque une erreur car tu as des fichiers dans ce dossier dont la concaténation des noms provoque une saturation du buffer de la ligne de commande.
En effet, l'astérisque est interprétée par le shell et non par la commande rm. Du coup, le shell la remplace par l'ensemble des noms de fichiers se trouvant dans ton dossier (sauf fichiers cachés) et provoque une saturation de son buffer de la ligne de commande.
Pour contourner, il te faut effectivement utiliser find.
find ~/.thumbnails/normal/ -type f -maxdepth 1 -exec rm {} \;
tu pourrais utiliser xargs en complément du ls mais c'est un peu plus compliqué car il faudrait que tu filtres les dossiers (à moins que tu souhaites aussi les supprimer). Et puis, avec le ls, il te faudrait te positionner dans le dossier en question avant de lancer la commande car le ls renvoie juste les noms de fichiers (sans le dossier).
voilà...
-- Lucid Lynx --
Hors ligne
#4 Le 14/08/2008, à 11:00
- ArSuniK
Re : rm liste d'arguments trop élevé??(RESOLU)
Le message d'erreur est du a la commande ls.
En effet, le shell expande le '*' et c'est la commande ls qui recoit trop d'argument.
Par exemple, ceci devrait fonctionner :
echo ~/.thumbnails/normal/* | xargs rm
Mais ce n'est pas une bonne facon de faire car les noms de fichiers avec des espaces engendreront des erreurs.
La solution avec find est mieux et tu peux conserver le xarg pour que ce soit plus rapide :
find ~/.thumbnails/normal/ -type f -maxdepth 1 -print0 | xargs -0 rm
Dernière modification par ArSuniK (Le 14/08/2008, à 11:01)
Hors ligne
#5 Le 14/08/2008, à 11:16
- Link Mauve
Re : rm liste d'arguments trop élevé??(RESOLU)
Ou sinon, en supprimant le dossier avec « rm -r ~/.thumbnails/normal » puis en le recréant, tu devrais arriver au même résultat.
Tu n'es même pas obligé de le recréer toi-même : quand Nautilus ou GIMP voudront afficher une miniature, ils vont le remettre.
Il serait bien de les empêcher de mettre dans ce dossier certains dossiers, comme /media/cdrom qui change à chaque fois qu'on change de CD, mais je n'ai trouvé cette option nulle part dans GNOME…
Hors ligne
#6 Le 14/08/2008, à 13:24
- clahor
Re : rm liste d'arguments trop élevé??(RESOLU)
merci a tous pour ces nombreuses reponses
je reessaierai quand mon dossier /.thumbnails/normal/ va se remplir a nouveau
Hors ligne
#7 Le 14/08/2008, à 13:42
- Totor
Re : rm liste d'arguments trop élevé??(RESOLU)
Ou sinon, en supprimant le dossier avec « rm -r ~/.thumbnails/normal » puis en le recréant, tu devrais arriver au même résultat.
Tu n'es même pas obligé de le recréer toi-même : quand Nautilus ou GIMP voudront afficher une miniature, ils vont le remettre.
C'est sur que c'est le plus simple mais cela implique la suppression des sous dossiers....Tout dépend du besoin !
-- Lucid Lynx --
Hors ligne