81 votes

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

J'ai besoin de trouver tous les fichiers commençant par le nom NAME dans une arborescence de répertoires et supprimer tous ces fichiers en utilisant une seule commande Shell.

87voto

Paul R Points 5306

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

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

NB : à utiliser avec précaution - sauvegarder d'abord - faire aussi un essai à sec avant, par exemple

$ find . -type f -name foo\*

vous indiquera simplement les noms des fichiers qui seront supprimés.

77voto

Dinesh Bhojvani Points 759

J'ai essayé de cette façon, cela fonctionne pour moi, essayez la commande ci-dessous.

rm -rf Example*

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

40voto

Dharshana Points 468

Pour supprimer tous les fichiers dont le nom a un nom, vous pouvez l'utiliser :

find  . -name 'name*' -exec rm {} \;

12voto

P.P Points 496

Vous pouvez utiliser find :

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

4voto

Benjamin W. Points 199

Avec le globstar option (activer avec shopt -s globstar ) :

rm -f **/NAME*

**/ s'étend à ./ , */ , */*/ , */*/*/ etc. Si vous avez un répertoire nom commençant par NAME la commande se plaindra que rm ne peut pas supprimer les répertoires, mais c'est tout.

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

Alternativement, avec aussi peu d'invocations de rm autant que possible, mais sans être soumis aux limitations de longueur des lignes de commande :

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

(Remarquez le + au lieu de \; pour fermer le -exec déclaration.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X