web-dev-qa-db-fra.com

Comment supprimer tous les fichiers commençant par une certaine chaîne sous Linux

Je dois rechercher tous les fichiers commençant par NAME dans une arborescence de répertoires et supprimer tous ces fichiers à l'aide d'une seule commande Shell.

32
Achini Pumika

Supprimez tous les fichiers du répertoire en cours et de ses sous-répertoires dont le nom de fichier commence par "foo":

$ find . -type f -name foo\* -exec rm {} \;

NB: utilisez avec précaution - sauvegardez d’abord - faites également un essai sur papier en premier, par exemple.

$ find . -type f -name foo\*

vous dira simplement les noms des fichiers qui seraient supprimés.

61
Paul R

J'ai essayé de cette façon cela fonctionne pour moi essayer en-dessous de la commande.

rm -rf Example*

ici, "Exemple" est un texte commun à tous les fichiers.

15
Dinesh Bhojvani

Vous pouvez utiliser find:

find . -name "name*" -exec rm {} \;
10
P.P.

Avec l'option globstar (activer avec shopt -s globstar):

rm -f **/NAME*

**/ se développe en ./, */, */*/, */*/*/ etc. Si vous avez un directory name commençant par NAME, la commande se plaint que rm ne peut pas supprimer de répertoires, mais c'est tout.

Notez que cela peut rencontrer des limitations de longueur de ligne de commande si le glob correspond à de nombreux fichiers.

Sinon, avec le moins d'appels possible de rm, mais non soumis aux limitations de longueur de ligne de commande:

find . -type f -name 'NAME*' -exec rm -f {} +

(Notez que + au lieu de \; pour fermer l'instruction -exec.)

3
Benjamin W.

find . -name 'foo'* -type f -delete semble être la réponse la plus simple.

Vous pouvez l'exécuter sans l'indicateur -delete avant pour voir quels fichiers seront supprimés.

2
Yehuda Schwartz