Windowsでフォルダーを削除し、その中のファイルの数に比例して時間がかからないようにする方法はありますか?
ええ、はい、パーティションをフォーマットします。過去9年間に誰もそれを示唆していないことに少し驚いています。
これはかなり急進的ですが、特定のフォルダーに対してこれを頻繁に行うと予想される場合は、そのフォルダー用に別のパーティションを作成する価値があります。
それがあまりにも過激な場合、他の答えはあなたの唯一の希望です。serverfaultの理由については良い説明があります。LinuxおよびXFSファイルシステム用ですが、ここでも同じロジックが適用されます。組み込みのOS機能についてはあまり改善できません。
ただし、削除するすべてのファイルへのパスがわかっている場合は、ディレクトリの内容を一覧表示する呼び出しを保存し、直接removeを呼び出してオーバーヘッドを節約できます。それでもファイルの数に比例します。
個人的には、プログラムが死ななかったことを確認するために、進捗レポートの一部が好きです。だから私はpython経由でものを削除するのが好きです。たとえば、すべてのファイルがサブディレクトリのない1つのディレクトリにある場合:
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
これにより、12年前のSEAGATE ST3250620NSで約250ファイル/秒が削除されます。あなたのドライブではもっと速くなると思います。
ただし、この時点では単なる最適化であるため、1つのディレクトリに数百万のファイルがない限り、それほど多くは行われません。(私のように、笑、私は何をしましたD :)