#1 Le 27/12/2010, à 19:45
- Thomson
Supprimer des fichiers portant une extension précise
Bonjour a tous,
J'ai une petite question a vous soumettre :
J'ai un répertoire de photos, avec dossier et sous dossier, dont chaque photo se présente ainsi : xxxxx.JPG (notez le JPG en majuscule)
J'ai voulu tout passer sous Xnview pour tout redimensionner, ce qui fut chose faite, j'ai préciser a Xnview d'écraser l'ancien fichier.
Sauf que Xnview a effectivement garder le nom du fichier ... mais pas l'extension !
Je me retrouve donc avec 2 photos identique : 1.jpg (rétrécie) et 1.JPG (originale), et ce pour chaque photo.
J'aimerais donc savoir si quelqu'un a une commande pour pouvoir supprimer toutes les photos finissant par .JPG
Je ne maitrise pas totalement la console, et je n'ai pas d'idée de commande a lancer dans le Terminal pour me faire tout ca en masse.
J'imagine que cette commande doit comporté quelque chose comme «*.JPG» mais j'ai peur de faire une boulette, donc je prefere vous demander.
Donc si quelqu'un aurait une commande pour supprimer en masse (tous les répertoires et sous répertoire inclus) les fichiers finissant par .JPG sans toucher aux autres... ce serait gentil a vous!
Je vous remercie d'avance,
Bonne soirée
Thomas
Hors ligne
#2 Le 27/12/2010, à 20:35
- Vaderf
Re : Supprimer des fichiers portant une extension précise
Salut Thomas
Je ne maitrise pas totalement la console, et je n'ai pas d'idée de commande a lancer dans le Terminal pour me faire tout ca en masse.
J'imagine que cette commande doit comporté quelque chose comme «*.JPG» mais j'ai peur de faire une boulette, donc je prefere vous demander.
Voici une façon de faire ce que tu souhaites :
tu ouvres une console
tu te rends dans le dossier à traiter (avec le commande cd)
tu exécute ces commandes :
for i in "$(find -name *.JPG)"; do rm "$i"; done
Tous les fichiers se trouvant dans le dossier et les sous-dossiers et se finissant par *.JPG seront effacés. Bien évidemment, comme il primordiale de comprendre ce que l'on met dans une console, je te détaille les commandes :
for i in : pour tous les éléments qui correspondent...
"$(find -name *.JPG)" : ...à l'extension (*.JPG) contenu dans le nom des fichiers (-name) recherchés (find)
do rm "$i" : les effacer (rm = remove)
done : fini la boucle
A noter que les guillemets sont importants surtout si tu as des espaces dans le noms des dossiers et fichiers.
(tous les répertoires et sous répertoire inclus) les fichiers finissant par .JPG sans toucher aux autres...
Veux-tu aussi supprimer les répertoires vides ?
A+
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#3 Le 27/12/2010, à 21:05
- Thomson
Re : Supprimer des fichiers portant une extension précise
Salut Vaderf;
Je te remercie de ta réponse, mais cela ne semble pas marcher, voici ce que me répond la console :
nono@nono-desktop:~$ cd /media/Donnees/Photos
nono@nono-desktop:/media/Donnees/Photos$ for i in "$(find -name *.JPG)"; do rm "$i"; done
find: les chemins doivent précéder l'expression : DSC00521.JPG
Utilisation : find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [chemin...] [expression]
rm: ne peut enlever `': Aucun fichier ou dossier de ce type
Pas besoin de supprimer les dossiers vides car il n'y en aura pas
Une idée ? Merci d'avance
Thomas
Hors ligne
#4 Le 27/12/2010, à 21:52
- erpiu
Re : Supprimer des fichiers portant une extension précise
Il manque un . qui désigne le dossier à partir duquel commence la recherche de fichiers :
for i in "$(find . -name *.JPG)" ; do rm "$i" ; done
Le . indique que l'on recherche les fichiers à partir du dossier courant en parcourant tous les éventuels sous-dossiers.
Hors ligne
#5 Le 25/10/2013, à 17:34
- bibi04
Re : Supprimer des fichiers portant une extension précise
Il me semble que la commande suivante est bien plus simple et fonctionne même si les noms de fichiers ont un espace :
find . -name *.JPG -delete
Dernière modification par bibi04 (Le 25/10/2013, à 17:34)
Hors ligne
#6 Le 13/09/2015, à 23:26
- poscony
Re : Supprimer des fichiers portant une extension précise
Il manque un . qui désigne le dossier à partir duquel commence la recherche de fichiers :
for i in "$(find . -name *.JPG)" ; do rm "$i" ; done
Le . indique que l'on recherche les fichiers à partir du dossier courant en parcourant tous les éventuels sous-dossiers.
Bonjour ,
cette commande me renvoi un message me listant tout les fichiers que je souhaite effacer , mais elle ne me les efface pas.
En revanche après m'avoir fait la liste des fichier elle me dit qu'il n'y a aucun fichier de ce type.
La commande : find . -name *.JPG -delete fonctionne parfaitement mais je pense qu'il vaut mieux etre dans le bon répertoire non ??
@ bientot .
Hors ligne