在 Windows 上打开含有很多文件的目录时会卡死,通过文件管理器删除这类目录时也会卡死。
原因是文件管理器会先将文件列表读入内存,当文件很多时就相当与使用 notepad 打开一个大文件。此时如果确定需要删除指定的目录,就不用打开查看了,直接在 git-bash 命令行删除。比如目标目录是 d:logs,则删除的命令行为:
cd /d
time rm -rfv logs
在删的过程中可以看到删除过程,如果想保存删除日志,可以在命令后加上 tee 命令:
time rm -rfv logs | tee remove.log
这样删的缺点是不知道什么时候删完,以及当前删到哪里了。可以写个带进度条的脚本来实现过程查看。
首先创建一个待删除文件列表:
cd /d
type f > flist.txt find logs -
带删除进度条的脚本如下,使用时将 os.remove 反注释,提前做好测试再真删。
from tqdm import tqdm
import time
import os
def count_lines(filename):
with open(filename, 'r', encoding='utf-8') as file:
return sum(1 for line in file)
def read_lines(filename):
with open(filename, 'r', encoding='utf-8') as file:
for line in file:
yield line.strip() # 返回每一行并去除末尾的换行符
# 文件列表
filename = r'd:flist.txt'
# 切换目录
os.chdir(r"d:\")
total = count_lines(filename)
with tqdm(total=total, desc="Processing", unit=" numbers", ncols=80) as pbar:
for line in read_lines(filename):
# print(line)
# os.remove(line)
if os.path.exists(line):
# print(line)
# 删文件
# os.remove(line)
pass
else:
# print("文件不存在")
pass
pbar.update(1)
# 真删时注释掉 sleep,不然会很慢
time.sleep(0.1)
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):如何批量删除海量小文件
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论