我有一个extFAT
外部驱动器,其中包含实验的备份结果,位于文件夹层次结构下。我想通过重命名所有文件来展平此文件夹目录,如下所示:
results/a/b/c/result.json -> results/a_b_c_result.json
我已经有一个 python 脚本来执行此操作:
for dp, dn, fns in os.walk('ogsn'):
for fn in fns:
path = os.path.join(dp, fn)
newpath = '_'.join(os.path.normpath(dp).split(os.sep) + [fn])
os.rename(path, newpath)
if i % 1000 == 0:
print(i, dp)
i += 1
问题是我有大约一百万个文件...而且这需要很长时间。
有没有什么办法可以加快速度?
答案1
我建议使用 PowerShell 单行程序,X:\results
使用响应路径进行递归
Set-Location X:\results;Get-ChildItem -Recurse -Name -File | Select-Object -First 20 | Move-Item -Destination {$_ -replace '\\','_'} -WhatIf
如果输出看起来正常,删除| Select-Object -First 20
尾随的-WhatIf
但请记住一包含百万个文件的文件夹可能会变慢任何采取进一步行动。