Як скопіювати кілька файлів і перемістити їх у кілька папок за допомогою терміналу для Mac


0

У мене на робочому столі Mac працює папка, Bthepicsяка має 9 зображень, які я хочу скопіювати і перемістити до приблизно 500 папок одночасно. Ці 500 папок розташовані у папці на робочому столі мого Mac під назвою bigcities. Я не хочу робити це вручну, вибираючи всі 9 зображень і перетягуючи кожну групу з дев'яти до всіх 500 папок окремо.

Хтось може мені показати, як це зробити за допомогою терміналів або програм автоматизації Mac ?


У папці bigcitiesє лише ті 500 папок призначення і нічого іншого? ... чи є інший спосіб, як визначити ці 500 папок призначення?
пабук

Привіт @pabouk, папка <code> bigcities </code> містить лише папки призначення.
Метт

Відповіді:


0

Це петля над кожною папкою в bigcitiesі копіює всі зображення з Bthepicsцієї папки. Запустіть це в Terminal і подивіться, чи він видає те, що ви хочете. Ви можете просто скопіювати цей блок коду.

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

Щоб зробити власне копіювання, видаліть його echoперед вставкою. Я припускаю, що ваші вихідні зображення мають розширення .jpg.

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


Привіт slhck! Дякуємо за швидку відповідь! Я дуже новачок в кодуванні, чи потрібно насправді вводити в коді "знайти" і "зроблено"? Значення, чи можу я просто скопіювати та вставити код, який ви мені дали, як це в термінал?
Метт

Ви просто візьмете весь блок коду і скопіюйте його в термінал. Він повинен вивести 500 рядків, щось на зразок cp IMAGE_1.jpg IMAGE_2.jpg ... IMAGE_9.jpg /Users/matt/Desktop/bigcities/FOLDER_1/, щоб ви перевірили, що це робить правильно. Після того, як ви впевнені, вам потрібно видалити echoта знову вставити його, що дозволить зробити фактичне копіювання.
slhck

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 така сама, як ви виконуєте вручну з%, буде замінено шлях до папок

Btw, ця команда скопіює зображення у батьківську папку (~ / Desktop / bigcities), тому вам потрібно видалити її за допомогою 1 команди:

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

Сподіваюся, ви зрозуміли мою ідею та застосували її до своєї справи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.