Y a-t-il un moyen de supprimer un dossier sous Windows sans que le temps pris soit proportionnel au nombre de fichiers qu'il contient ?
Eh bien, oui, formatez la partition. Je suis un peu surpris que personne n'ait suggéré cela au cours des 9 dernières années.
C'est assez radical, mais si vous envisagez de le faire fréquemment pour un dossier spécifique, il pourrait être utile de créer une partition séparée pour cela.
Si c'est trop radical, les autres réponses sont votre seul espoir. Il y a une bonne explication sur serverfault. C'est pour linux et les systèmes de fichiers XFS, mais la même logique s'applique ici. Vous ne pouvez pas améliorer beaucoup les fonctions intégrées du système d'exploitation.
Cependant, si vous connaissez les chemins de tous les fichiers que vous souhaitez supprimer, vous pouvez économiser des appels qui listent le contenu du répertoire et appeler la suppression directement, en économisant ainsi une certaine charge. Toujours proportionnel au nombre de fichiers cependant.
Personnellement, j'aime avoir une sorte de rapport de progression pour m'assurer que le programme n'a pas planté. Alors j'aime supprimer des choses via python. Par exemple, si tous les fichiers se trouvent dans un seul répertoire sans sous-répertoires :
import tqdm
import sys
import os
location = sys.argv[1]
directory = os.fsencode(location)
with os.scandir(directory) as it:
for dir_entry in tqdm.tqdm(it):
try:
os.remove(dir_entry.path)
except OSError:
pass # n'était pas un fichier
Cela supprime environ 250 fichiers/s sur mon ancien SEAGATE ST3250620NS de 12 ans. Je suppose que ce sera beaucoup plus rapide sur votre disque.
Cependant, à ce stade, ce n'est qu'une micro-optimisation, donc cela ne fera pas grand-chose sauf si vous avez des millions de fichiers dans un seul répertoire. (comme moi, lol, qu'ai-je fait D:)