У меня на рабочем столе Mac есть папка Bthepics которой есть 9 изображений, которые я хочу скопировать и перенести в 500 папок одновременно. Эти 500 папок находятся в папке на рабочем столе моего Mac, которая называется bigcities . Я не хочу делать это вручную, выбрав все 9 изображений и перетащив каждую группу из девяти во все 500 папок по отдельности.

Кто-нибудь может показать мне, как это сделать, используя Mac- терминал или программы Automator ?

3 ответа3

0

Это перебирает каждую папку в bigcities и копирует все изображения из Bthepics в эту папку. Запустите это в терминале и посмотрите, выводит ли он то, что вы хотите. Вы можете просто скопировать и вставить этот блок кода.

find ~/Desktop/bigcities -type d -maxdepth 1 -print0 | while IFS= read -r -d '' folder; do
  echo cp ~/Desktop/Bthepics/*.jpg "$folder"
done

Для фактического копирования удалите echo перед вставкой. Я предполагаю, что ваши исходные изображения имеют расширение .jpg .

Затем просто удалите оригинальные изображения вручную.

0

Вот более простой код, который не требует запуска внешней команды (find) и передачи результатов. Остальное такое же, как в ответе slhck.

cd ~/Desktop/bigcities ; for folder in */ ; do
  echo cp ~/Desktop/Bthepics/*.jpg "$folder"
done

Этот код имеет один недостаток: список папок назначения не должен превышать около 260 000 символов (ограничение размера командной строки в Mac OS X 10.5). Для 500 папок это около 500 символов на имя папки.

0

Вы должны ознакомиться с командой xargs для задачи автоматизации, например:

find ~/Desktop/bigcities -type d -print0 | xargs -I% cp ~/Desktop/Bthepics/image[1-9].jpg %/

это было бы, если бы ваши 9 изображений назывались image1.jpg image2.jpg ...
если ваши 9 изображений отличаются именами:

find ~/Desktop/bigcities -type d -print0 | xargs -I% cp ~/Desktop/Bthepics/file1.jpg ~/Desktop/Bthepics/file2.jpg ... ~/Desktop/Bthepics/file9.jpg %/

команда в конце xargs такая же, как вы выполняете вручную,% будет заменен на путь к папке

Кстати, эта команда скопирует изображения в родительскую папку (~/Desktop/bigcities), поэтому вам нужно удалить ее одной командой:

rm ~/Desktop/bigcities/image[1-9].jpg

Я надеюсь, что вы понимаете мою идею и применяете ее для своего случая.

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