Windows'ta bir klasörü silmenin ve içindeki dosya sayısıyla orantılı bir zaman geçirmemenin bir yolu var mı?
Evet, bölümü biçimlendirin. Geçen 9 yılda kimsenin bunu önermediğine şaşırdım.
Oldukça radikal, ancak bunu belirli bir klasör için sık sık yapmayı düşünüyorsanız, bunun için ayrı bir bölüm oluşturmaya değecektir.
Bu çok radikal olursa, diğer cevaplar tek umudunuz. Neden serverfault üzerinde iyi bir açıklama var . Linux ve XFS dosya sistemleri içindir, ancak aynı mantık burada da geçerlidir. Yerleşik işletim sistemi işlevlerinde pek bir şey geliştiremezsiniz.
Bununla birlikte, silmek istediğiniz tüm dosyalara giden yolları biliyorsanız, dizin içeriğini listeleyen aramalara kaydedebilir ve doğrudan gidererek arama yapabilirsiniz. Yine de dosya sayısıyla orantılı.
Şahsen, programın ölmediğinden emin olmak için ilerleme raporlarından bazılarını seviyorum. Bu yüzden bir şey python ile silmek istiyorum. Örneğin, tüm dosyalar alt dizinleri olmayan tek bir dizindeyse:
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 # was not a file
Bu, 12 yaşındaki SEAGATE ST3250620NS cihazımda yaklaşık 250 dosya / saniye siler. Sürücünüzde çok daha hızlı olacağını varsayardım.
Ancak, bu noktada sadece mikro optimizasyon, yani bir dizinde milyonlarca dosya bulunmadığı sürece pek bir şey yapmayacak. (benim gibi, lol, ben ne yaptım D :)