OSX:检查子文件夹,将目录结构展平到新文件夹中,然后移动到桌面

OSX:检查子文件夹,将目录结构展平到新文件夹中,然后移动到桌面

我正在清理一个巨大的漫画库(主要是 - 但不仅仅是 - 图片文件)。每本漫画都有一个主文件夹,其中包含子文件夹,每卷一个。

但有时,卷文件夹仅包含图像文件,有时包含子文件夹。

我想要一个针对选定的漫画文件夹的脚本:

  • 检查哪些卷文件夹有子文件夹
  • 将卷文件夹的目录结构与子文件夹扁平化。我希望它在桌面上创建一个新文件夹,并将所有子文件夹的图像复制到其中,而不是将所有图像放在父文件夹中并删除子文件夹。
  • 将桌面上创建的文件夹重命名为其原始父文件夹

前 :

漫画文件夹

volume1_folder

    subfolder1 / image1, image2, image3
    subfolder2 / image4, image5, image6
    subfolder3 / image7, image8, image9

volume2_folder

    image1, image2, image3, image4, image5, image6, image7, image8, image9

volume3_folder

    subfolder1 / image1, image2, image3
    subfolder2 / image4, image5, image6
    subfolder3 / image7, image8, image9

后:

桌面:

volume1_folder

    image1, image2, image3, image4, image5, image6, image7, image8, image9

volume3_folder

    image1, image2, image3, image4, image5, image6, image7, image8, image9

原始文件夹应保持不变这样我就可以检查放错的文件等等。

目前,我使用 AppleScript 来扁平化我选择的每个卷文件夹的目录结构。它会在里面创建一个新文件夹,以其父文件夹命名,其中包含所有复制的图像。

它不具备以下特性:

  • 检查哪些卷文件夹有子文件夹(我必须每次单独选择每个卷文件夹并启动脚本)
  • 将创建的文件夹以扁平目录结构移动到桌面

我确实尝试过自己实施更改,但我可以将新文件夹移动到桌面或以其父文件夹重命名。当我输入两个指令(无论先输入哪个指令)时,我会收到一条错误消息,提示在执行第一个指令后找不到该文件夹​​。以下是脚本:

tell application "Finder"
    set theTopFolder to (selection as alias)
    set theFiles to a reference to every file of (entire contents of folder theTopFolder)
    set theNewFolder to make new folder at theTopFolder with properties {name:"Flattened Files"}
    duplicate theFiles to theNewFolder
    set name of theNewFolder to name of theTopFolder
    
    
    --move theNewFolder to "Macintosh HD:Users:xx:Desktop:"
end tell

答案1

tell application "Finder"
    repeat with f in (get folders of (POSIX file "/Users/username/manga_folder" as alias))
        make new folder at desktop with properties {name:(get name of f)}
        duplicate files of entire contents of f to result
    end repeat
end tell

你也可以使用如下 shell 命令:

cd ~/manga_folder;for d in *;do mkdir ~/Desktop/"$d";find "$d" -type f|while read f;do cp "$f" ~/Desktop/"$d";done;done

或者如果你有 GNU cp:

cd ~/manga_folder;for d in *;do mkdir ~/Desktop/"$d";find "$d" -type f -exec gcp -t ~/Desktop/"$d" {} +;done

相关内容