J'ai besoin de trouver tous les fichiers commençant par le nom NAME
dans une arborescence de répertoires et de supprimer tous ces fichiers à l'aide d'une seule commande shell.
36
pour supprimer tous les fichiers dont le nom a un nom --- vous pouvez utiliser
find -name . 'name*' -exec rm {} \;
grep
possède un-exec
interrupteur?Supprimez tous les fichiers dans le répertoire courant et ses sous-répertoires où le nom de fichier commence par "foo":
NB: utiliser avec prudence - sauvegarder en premier - effectuer également un essai à sec en premier, par ex.
vous indiquera simplement les noms des fichiers qui seront supprimés.
la source
find . -type f -name foo\* -delete
fait l'affaireJ'ai essayé de cette façon, cela fonctionne pour moi, essayez la commande ci-dessous.
ici "Exemple" est un texte commun à tous les fichiers.
la source
Vous pouvez utiliser
find
:la source
Avec l'
globstar
option (activer avecshopt -s globstar
):**/
se développe en./
,*/
,*/*/
,*/*/*/
etc. Si vous avez un répertoire nom commençant parNAME
la commande se plaignent querm
ne peut pas supprimer des répertoires, mais c'est tout.Notez que cela peut entraîner des limitations de longueur de ligne de commande si le glob correspond à plusieurs fichiers.
Alternativement, avec aussi peu d'appels
rm
que possible, mais sans aucune limitation de longueur de ligne de commande:(Remarquez au
+
lieu de\;
fermer la-exec
déclaration.)la source
find . -name 'foo'* -type f -delete
semble être la réponse la plus simple.Vous pouvez l'exécuter sans l'
-delete
indicateur avant pour voir quels fichiers seront supprimés.la source
Recherchez le numéro "Inode" du fichier / dossier, puis supprimez-le à l'aide du numéro d'inode. Voici un exemple:
la source