Задать вопрос

Как автоматически создать 100 папок и переместить в каждую по 10 картинок из общей папки?

У Маши есть общая папка с картинками, их много. Необходимо каким-нибудь потоковым методом создать 100 папок и переместить в каждую из них по 10 картинок (не важно каких и не важно в какую папку) из общей папки. Как это осуществить?
  • Вопрос задан
  • 577 просмотров
Подписаться 3 Оценить 2 комментария
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
BASE=`pwd`/..
for DIR in `seq 1 100` ; do
    mkdir "$BASE/$DIR" && { find -type f | head -n 10 | xargs -d"\n" -I{} mv {} "$BASE/$DIR" ; }
done
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
for (i=0; i<100; i++) {
  новая_папка = сгененировать_имя_папки();
  создать_папку(новая_папка);
  переместить_10_картинок(общая_папка, новая_папка);
}

функция переместить_10_картинок(откуда, куда) {
  for (i=0; i<10; i++) {
     файл = получить_имя_файла_из_папки(откуда)
     переместить_файл(файл, куда)
  }
}

И что такое "потоковым методом"?
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Берёшь любой язык программирования с достаточно мощной библиотекой и пишешь:

целое iFile = 0
строка sourcePath = добавитьРазделитель(общаяПапка)
строка targetPath = ""
для fname : перебор по файлам в sourcePath + '*'
  строка sourceName = sourcePath + fname
  если iFile % РАЗМЕРПАПКИ = 0
    строка targetFolder = добавитьРазделитель(целеваяПапка) + целоеВСтроку(iFile / РАЗМЕРПАПКИ)
    создатьНовуюПапку(targetFolder)
    targetPath = добавитьРазделитель(targetFolder)
  копироватьФайл(sourceName, targetPath + fname)
  удалитьФайл(sourceName)
  iFile = iFile + 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы