web-dev-qa-db-fra.com

La suppression de nombreux fichiers entraîne "une liste d'arguments trop longue"

J'ai 280 000 photos à supprimer dans un dossier, mais certaines vidéos à conserver. Dans le dossier, j'ai donné la commande: #rm *.jpg, mais j'obtiens "liste d'arguments trop longue". Lorsque je crée un argument pour supprimer certaines photos, cela fonctionne sur un ensemble plus petit, comme ceci: # rm 104 - *. Jpg.

Comment puis-je supprimer efficacement tous les fichiers JPEG d'un répertoire sans obtenir le message "Liste d'arguments trop longue"?

#rm -f *.jpg donne le même message.

Enter image description here

Ouvrir le dossier dans Caja utilise trop de mémoire et se bloque. J'utilise buntu MATE .

1
j0h

Un moyen typique de gérer l'erreur "liste d'arguments trop longue" consiste à utiliser la commande find:

find  -maxdepth 1 -mindepth 1 -type f -name "*.jpg" -delete
10

Vous pouvez utiliser xargs:

printf '%s\0' *.jpg | xargs -0 rm --

Dans bash, la commande printf est intégrée et n'est pas soumise aux mêmes limitations de longueur d'argument.

7
steeldriver