【问题标题】:How to rearrange files with respect to a directory structure containing same files?如何针对包含相同文件的目录结构重新排列文件?
【发布时间】:2017-06-02 04:54:44
【问题描述】:

我正在将计算机中的文件备份/同步到外部硬盘。

例如,我像这样对外部硬盘中的一些文件进行了排序 (我有大约 1000 个目录和 10000 个文件,下面给出的目录结构仅用于说明目的)

folderA
    -aa.jpg
    -ab.mp3
    -ac.mp4

folderB
    -ba.jpg
    -bb.mp3
    -bc.mp4

在我的电脑中,我的“temp”文件夹中有相同的文件

aa.jpg, ab.mp3, ac.mp4, ba.jpg, bb.mp3, bc.mp4

我在哪里

我希望“temp”中的文件这样排列

temp

--folderA
    -aa.jpg
    -ab.mp3
    -ac.mp4

--folderB
    -ba.jpg
    -bb.mp3
    -bc.mp4

是否有任何工具或脚本可以为我执行此操作(针对 1000 多个目录和 10000 多个文件)?

【问题讨论】:

    标签: python linux shell backup file-management


    【解决方案1】:

    对于 Windows,在下面创建 python 脚本并将其复制到临时目录,只需将路径替换为您的“临时”:

    import os
    import shutil
    
    if not os.path.exists('C:/Users/myuser/Desktop/day/folderA'):
           os.makedirs('C:/Users/myuser/Desktop/day/folderA')
    if not os.path.exists('C:/Users/myuser/Desktop/day/folderB'):
           os.makedirs('C:/Users/myuser/Desktop/day/folderB')
    
    sourcepath='C:/Users/myuser/Desktop/day'
    source = os.listdir(sourcepath)
    destinationpath = 'C:/Users/myuser/Desktop/day/folderA'
    destinationpath2 = 'C:/Users/myuser/Desktop/day/folderB'
    for files in source:
    if files.startswith('a'):
        shutil.move(os.path.join(sourcepath,files), os.path.join(destinationpath,files))
    if files.startswith('b'):
        shutil.move(os.path.join(sourcepath,files), os.path.join(destinationpath2,files))
    
    listA = os.listdir('C:/Users/myuser/Desktop/day/folderA')
    listA.sort()
    listB = os.listdir('C:/Users/myuser/Desktop/day/folderB')
    listB.sort()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-29
      • 2014-11-08
      • 2010-09-26
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 2017-08-04
      • 2016-11-24
      相关资源
      最近更新 更多