在 Windows 上打开含有很多文件的目录时会卡死,通过文件管理器删除这类目录时也会卡死。
原因是文件管理器会先将文件列表读入内存,当文件很多时就相当与使用 notepad 打开一个大文件。此时如果确定需要删除指定的目录,就不用打开查看了,直接在 git-bash 命令行删除。比如目标目录是 d:\logs,则删除的命令行为:
$ cd d$ time rm -rfv logs
在删的过程中可以看到删除过程,如果想保存删除日志,可以在命令后加上 tee 命令:
$ time rm -rfv logs | tee remove.log
这样删的缺点是不知道什么时候删完,以及当前删到哪里了。可以写个带进度条的脚本来实现过程查看。

首先创建一个待删除文件列表:
$ cd d$ find logs -type f > flist.txt
带删除进度条的脚本如下,使用时将 os.remove 反注释,提前做好测试再真删。
from tqdm import tqdmimport timeimport osdef 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)passelse:# print("文件不存在")passpbar.update(1)# 真删时注释掉 sleep,不然会很慢time.sleep(0.1)
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




