Ищем Applescript, чтобы найти файлы и переместить их в другую папку
Я пытаюсь найти скрипт для поиска и перемещения файлов в другую папку.
У меня есть папка с сотнями картинок, подобных этой:
PA-600-01.jpg, PA-600-02.jpg, PA-600-03.jpg, PA-600-04.jpg, PA-601-01.jpg, PA-601-02.jpg, PA-601-03.jpg, PA-602-01.jpg, PA-602-02.jpg, PA-602-03.jpg, PA-602-04.jpg, PA-602-05.jpg
Я хочу переместить все фотографии с PA-600
(so PA-600-01.jpg, PA-600-02.jpg, PA-600-03.jpg and PA-600-04.jpg
) в папке (новой или уже существующей, тем легче...) с именем PA-600
переместить все картинки с PA-601
(PA-601-01.jpg, PA-601-02.jpg and PA-601-03.jpg
) в папке с именем PA-601
переместить все картинки с PA-602
(PA-602-01.jpg, PA-602-02.jpg, PA-602-03.jpg, PA-602-04.jpg and PA-602-05.jpg
) в папке с именем PA-602
... до тех пор PA-699
Я пытался переместить файл, но не группу файлов:
tell application "Finder" make new folder at alias "Macintosh HD:Users:AirYoSo:Desktop:600-699" with properties {name:"PA-600"} copy file "Macintosh HD:Users:AirYoSo:Desktop:600-699:PA-600-01.jpg" to folder "Macintosh HD:Users:AirYoSo:Desktop:600-699:PA-600" end tell
2 ответа
Не знаю, как это сделать в AppleScript, но это довольно просто сделать в Bash, который вы установили на своем Mac:
#!/bin/bash
for (( c=600; c<=699; c++ ))
do
echo "Processing PA-$c"
mkdir -p PA-$c
mv PA-$c-*.jpg PA-$c/
done
Сохраните это в файл, например script.sh
Скопируйте файл в каталог с вашими файлами jpg и запустите его так же, как в терминале (замените /Users/lionel/files реальным путем к вашим файлам):
$ cd /Users/lionel/files
$ bash script.sh
Пытаться:
set myFolder to (choose folder)
set pFolder to POSIX path of myFolder
set folderNames to paragraphs of (do shell script "find " & quoted form of pFolder & " \\! -name \".*\" -type f -print0 | xargs -0 ls -t | grep -Eo PA-[0-9]{3} | uniq")
repeat with aFolder in folderNames
(do shell script "mkdir -p " & quoted form of (pFolder & aFolder))
tell application "System Events" to move (every file of myFolder whose name begins with aFolder) to (pFolder & aFolder)
end repeat
РЕДАКТИРОВАТЬ Если вы хотите жестко связать путь к папке, которую вы можете использовать:
set myFolder to "Macintosh HD:Users:YoSo:Desktop:test"
set pFolder to myFolder's POSIX path & "/"
set folderNames to paragraphs of (do shell script "find " & quoted form of pFolder & " \\! -name \".*\" -type f -print0 | xargs -0 ls -t | grep -Eo PA-[0-9]{3} | uniq")
repeat with aFolder in folderNames
(do shell script "mkdir -p " & quoted form of (pFolder & aFolder))
tell application "System Events" to move (every file of folder myFolder whose name begins with aFolder) to (pFolder & aFolder)
end repeat