1

Я нахожусь в процессе очистки огромной библиотеки манга (в основном - но не только - файлов изображений). У каждой манги есть основная папка, содержащая подпапки, по одной на каждый том.

Но иногда папки с томами содержат только файлы изображений, а иногда они содержат подпапки.

Я хотел бы сценарий, который, для выбранной папки манги:

  • проверьте, какие папки томов имеют подпапки
  • выровнять структуру каталогов томов с подпапками. Вместо того, чтобы помещать все изображения в родительскую папку и стирать подпапки, я хотел бы создать новую папку на рабочем столе и скопировать в нее все изображения подпапок.
  • переименовать папку, созданную на рабочем столе, после ее исходной родительской папки

До :

manga_folder

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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .