web-dev-qa-db-fra.com

Comment supprimer tous les fichiers avec une certaine extension d'un dossier et de tous ses sous-dossiers?

Je veux supprimer tous les fichiers .jpg de mon dossier Musique afin de gagner de la place. Mon dossier Musique contient des sous-dossiers et j'aimerais savoir s'il existe une commande pour supprimer tous les fichiers .jpg de tous ces dossiers, quel que soit leur niveau. Merci de votre aide!

18
Tigull

Le moyen le plus simple (si vous utilisez Ubuntu Desktop):

Accédez à votre dossier Musique dans Nautilus, appuyez sur Ctrl+F et recherchez .jpg.

enter image description here et ensuite le supprimer


Vous pouvez également modifier l'emplacement et rendre votre recherche plus précise.

enter image description here


Mis à jour

Soyez plus précis après la recherche .jpg En cliquant sur le bouton vert Select File type Picture & supprimez jpg de la recherche uniquement . point & puis reload comme indiqué dans l’illustration ci-dessous

Cela permet de rechercher un fichier image comme .jpg .png .gif et tous les autres fichiers qui sont en Picture Format

enter image description here

9
One Zero

Une solution rapide et propre pour la ligne de commande serait

cd <dir>
find . -type f -iname \*.jpg -delete
  • . indique de commencer la recherche dans le dossier actuel.
  • -type f indique à find uniquement de rechercher des fichiers.
  • -iname rend la recherche insensible à la casse.
  • -delete indique à find de supprimer/supprimer tous les fichiers trouvés.

ATTENTION! Je recommande d'exécuter la commande sans -delete au préalable pour obtenir la liste des fichiers qui seront supprimés lorsque -delete sera inclus dans la commande. Ainsi, une petite faute de frappe ne supprimera rien de ce que vous n'aviez pas l'intention de faire.

Pour plus d'informations sur l'utilisation de find et sur ce qu'il peut faire, voir man find

Notez que find ne produira aucune sortie lorsque -delete sera utilisé.

Concernant le commentaire sur plusieurs extensions

find . -type f \( -name \*jpg -o -name \*png \) -delete

  • ( .. ) Expression de groupe. Doit être échappé du shell, d'où \( .. \) dans l'exemple
  • -o ou logique

Ainsi, l'exemple ci-dessus correspondra à tout fichier dont le nom jpg ou png apparaît à la fin de son nom. Plusieurs extensions peuvent être ajoutées de la même manière. Veillez simplement à vous souvenir de -o entre chaque instruction -name; si -o n'est pas spécifié, find sera par défaut à -a (et), ce qui ne fonctionnera pas car un fichier ne peut pas se terminer par jpg et png en même temps.

60
Zoke

Cela devrait le faire

Sudo rm -rf -d ~/Music/*.JPG

qui supprimera tous les fichiers .JPG du dossier Musique.

6
Ringtail

Le shopt -s globstar de Bash peut être utile ici pour les globbing récursifs:

bash-4.3$ tree
.
├── 10.jpg
└── subfolder
    ├── 5.jpg
    └── another_subfolder
        └── 15.jpg

2 directories, 3 files
bash-4.3$ shopt -s globstar
bash-4.3$ rm ./**/*.jpg
bash-4.3$ tree
.
└── subfolder
    └── another_subfolder
0
Sergiy Kolodyazhnyy