我正在清理一个巨大的漫画库(主要是 - 但不仅仅是 - 图片文件)。每本漫画都有一个主文件夹,其中包含子文件夹,每卷一个。
但有时,卷文件夹仅包含图像文件,有时包含子文件夹。
我想要一个针对选定的漫画文件夹的脚本:
- 检查哪些卷文件夹有子文件夹
- 将卷文件夹的目录结构与子文件夹扁平化。我希望它在桌面上创建一个新文件夹,并将所有子文件夹的图像复制到其中,而不是将所有图像放在父文件夹中并删除子文件夹。
- 将桌面上创建的文件夹重命名为其原始父文件夹
前 :
漫画文件夹
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