J'ai environ 1 000 000 d'images png à supprimer de ma corbeille. J'ai essayé:
rm -rf /home/ahmed/.local/share/Trash/*
find . -name '*' | xargs rm -v
J'ai le suivant
bash: /usr/bin/find: Argument list too long
ARG_MAX
est déclenché dans le processus de listage/suppression.
Vous pouvez:
Laissez find
gérer la suppression, il gère par nature ARG_MAX
:
find /home/ahmed/.local/share/Trash/ -type f -iname '*.png' -delete
Tirez parti d'une construction for
, c'est lent BTW:
for f in /home/ahmed/.local/share/Trash/*.[Pp][Nn][Gg]; do
[[ -f $f ]] && rm "$f"
done
Le shell étend le caractère générique *
à tous les noms de fichiers, ce qui déborde la longueur maximale de la ligne de commande. Bien que dans votre deuxième exemple, cela ne peut pas se produire, car l'astérisque est entre guillemets '*'
.
Pour supprimer tout le répertoire, vous pouvez également supprimer le répertoire lui-même
rm -rf /home/ahmed/.local/share/Trash
Notez le caractère générique manquant à la fin.
Une autre approche pour éviter ce type d'erreur avec find
, pourrait être d'utiliser -type f
. Cette option sélectionne tous les fichiers normaux, par ex.
find . -type f | xargs rm -v
Avec 1 000 000 de fichiers, j'éviterais l'option -v
.