重命名/移动数千个文件的最快方法

重命名/移动数千个文件的最快方法

我有一个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

但请记住包含百万个文件的文件夹可能会变慢任何采取进一步行动。

相关内容