web-dev-qa-db-fra.com

Supprimer des fichiers dans un répertoire basé sur un nom partiel

Je voulais savoir quel est le meilleur moyen de supprimer des fichiers, quelle que soit leur extension, basée sur un nom partiel.

Exemple:

13-05-12_foo_something.jpg
13-06-01_something.png
13-05-05_foo_site.html

rm tout dans un répertoire et dans les sous-dossiers avec _foo_ dans le nom.

4

La manière simple:

cd /path/to/directory
rm *_foo_*

ou

rm /path/to/directory/*_foo_*

L'astérisque (*) correspond à tous les caractères.

Pour obtenir des explications sur ce qui est fait, utilisez rm avec l'option -v. Pour être invité avant chaque suppression, utilisez rm avec l'option -i:

rm -vi *_foo_*

Voir man rm pour plus d'informations.

4
Radu Rădeanu

Si vous souhaitez également le faire dans tous les sous-répertoires, le moyen le plus simple consiste à activer l'option globstar Shell:

_shopt -s globstar
rm **/*foo_*
_

Il devrait y avoir une ligne commentée (c'est-à-dire commençant par une ligne _#_) dans la valeur par défaut _~/.bashrc_ (ligne 29 dans la mienne):

_# shopt -s globstar extglob
_

Décommentez simplement cette ligne et vous aurez accès à quelques fonctionnalités améliorées de bash .

1
evilsoup