[RÉSOLU] Ligne de commande - Supprimer un certain type de fichier

Hello

Sachant que la ligne de commande est très puissante, j’aimerais supprimer environ 6000 fichiers png d’un dossier et de ses sous dossiers.
Je connais rm qui peut supprimer un fichier ou un dossier mais je ne sais pas comment lui dire d’y faire.

supprime tous les fichiers qui ont l’estention png dans le dossier courant.

rm *.png

si tu veux un truc récursif, c’est un peu plus compliqué. voila comment je ferais :

find . -name *.png | xargs rm

explication :

trouve tous les fichiers qui ont l’extention png dans le dossier courant et ses sous dossiers (tu peux remplacer le . par le chemin que tu souhaite) et les écrit sur la sortie standard (= dans ton terminal)

le | prends la sortie de la commande précedente (qui ne sera pas affichée du coup) et la donne comme entrée à la commande suivante.

xargs rm

xargs est une commande qui appelle la commande passée en paramètre avec tous les arguments passés dans l’entrée standard, donc, pour charque résultat du find précedent, elle va appeller la commande rm (remove)

merci moi1392
explication très clair, net et pertinente

y’a mieux avec find : l’option -exec

find . -name "*.png" -exec /bin/rm '{}' \;

Ou "comment se compliquer inutilement la vie" :paf:

rm -r *.png

"-r" pour "récursif" :oui:

Non, ça va supprimer les .png du répertoire courant, et récursivement les répertoires se terminant par .png (s’il y en a) qui sont dans le répertoire courant (et donc absolument tout ce que ces répertoires contiennent, pas seulement les .png). Le find est obligatoire ici :wink:

faut etre pervers pour avoir des repertoires terminant par .png :smiley:
et pour etre sur que le find ne liste que les fichiers, il faut rajouter : -type f
donc ca fait (a ma maniere) :

find . -name "*.png" -type f -exec /bin/rm '{}' \;

ou (a la maniere de moi1392) :

find . -name *.png -type f | xargs rm

Quand on fait des scripts qui seront amenés à être utilisés par quelqu’un d’autre que toi, faut toujours envisager le pire cas possible :ane:

Sinon, je ne connaissais pas xargs, j’ai toujours utilisé l’option -exec du find.

Hum oui c’est vrai, au temps pour moi (j’ai honte).

Pour me racheter:
l’option exec de find est très bien, mais s’il y a 6000 fichiers, ça va appeler 6000 fois rm.
C’est pareil avec xargs, sauf si on spécifie un paramètre:
find . -name “*.png”|xargs -n 10 /bin/rm
Ca supprimera les fichiers par paquet de 10, en n’appelant donc rm “que” 600 fois.