Je dois supprimer 200 000 fichiers (tous) d'un dossier et je ne veux pas supprimer le dossier lui-même.
en utilisant rm, j'obtiens une erreur "Liste d'arguments trop longue". J'ai essayé de faire quelque chose avec xargs, mais je ne suis pas un Shell Guy, donc ça ne marche pas:
find -name * | xargs rm -f
Réponses:
la source
-delete
. Cela évite également les problèmes avec les fichiers contenant des guillemets ou des caractères de nouvelle ligne (bien que vous puissiez utiliser-print0
les-0
options de GNU find et GNU xarg pour résoudre ce problème).xargs
entre - tempsfind
a la-exec command {} +
syntaxe.Vous faites tout bien. C'est le '*' qui vous pose un problème (le shell le développe en liste de fichiers au lieu de
find
). La bonne syntaxe pourrait être:(Ce dernier est un peu moins efficace car il passera des noms plus longs à
xargs
, mais vous remarquerez à peine :-))Alternativement, vous pouvez échapper à votre '*' comme ceci (mais dans ce cas, il essaiera également de supprimer "." Et ".."; ce n'est pas un gros problème - vous obtiendrez juste un petit avertissement :-)):
Si vos noms de fichiers contiennent des espaces, utilisez ceci:
la source
La commande suivante supprimera tous les fichiers du répertoire actuel :
la source
-name '*'
ne signifie pas "tous les fichiers". Les fichiers sont dit avec:-type f
tu peux essayer
ou
la source
Bravo à quantas réponse, voici quelques ajouts.
Si vous souhaitez supprimer des fichiers avec un modèle de nom particulier, vous pouvez l'écrire comme ceci. Également ajouté -print pour que vous puissiez voir ce qui se passe lorsque les fichiers sont supprimés.
Cela supprime par exemple tous les fichiers jpeg de mon répertoire.
la source