2017-08-21 6 views
0

J'essaie de supprimer un dossier utilisé dans mon cdn et il crée de nouveaux dossiers pour chaque fichier visualisé. Cela signifie que pour chaque fichier demandé, il s'agit d'un dossier. Cela a empilé jusqu'à environ 100 millions de dossiers dans mon dossier principal.Suppression d'un dossier et de tout son contenu si le dossier contient plus d'un million de fichiers

Comment pourrais-je supprimer tous les contenus à l'intérieur? Parce que quand j'essaye rm -rf cela me donne l'erreur de liste d'arguments trop longtemps.

+5

Quelle est votre ligne de commande exacte? Parce que 'rm -rf' par lui-même ne fait rien. Quels arguments fournissez-vous? – larsks

+2

Exactement ce que vous essayez de supprimer est un peu flou. Vous dites "allez à supprimer tous les contenus à l'intérieur" mais votre titre dit, "supprimer un dossier et tout son contenu". Si c'est le dossier et son contenu, utilisez simplement 'rm -rf nom_de_dossier '. Cela supprime 'folder_name' et tout ce qu'il contient. – lurker

+0

Copie possible de [supprimer le fichier sous linux?] (Https://stackoverflow.com/questions/44952355/delete-file-in-linux) – dlmeetei

Répondre

0

Votre message est un peu confus et appartiennent certainement à serverfault mais ..

Probablement, ce que vous essayez de faire est quelque chose comme:

rm -rf * 

Le message d'erreur "Argument list too long" est à partir de bash qui ont une taille de mémoire fixe pour la liste des arguments. Ainsi, lorsque vous exécutez rm -rf *, bash commence par créer une liste de tous les fichiers/dossiers avant de les supprimer. Pour voir la taille:

getconf ARG_MAX 

Si vous voulez supprimer le dossier entier, juste rm -rf folder/* devrait fonctionner. Mais si vous voulez supprimer des fichiers dans le dossier,

find /folder/ -type d -exec rm -rf {} \; 

Tout ce répertoire trouvé (-type d) avec trouver vous être supprimé un par un.