
Я в процессе очистки огромной библиотеки манги (в основном, но не только, файлов изображений). Каждая манга имеет главную папку, содержащую подпапки, по одной на каждый том.
Но иногда папки томов содержат только файлы изображений, а иногда они содержат подпапки.
Мне нужен скрипт, который для выбранной папки манги:
- проверьте, какие папки тома имеют подпапки
- выровнять структуру каталогов папок тома с подпапками. Вместо того, чтобы помещать все изображения в родительскую папку и стирать подпапки, я бы хотел создать новую папку на рабочем столе и скопировать в нее все изображения подпапок.
- переименуйте папку, созданную на рабочем столе, в честь ее исходной родительской папки
До :
манга_папка
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
Вы также можете использовать такую команду оболочки:
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