LINUX.ORG.RU

Как распределить все фото из одной папки по большому количеству других?

 , ,


0

1

Доброго времени суток, есть одна большая папка, в ней более 4000 фотографий. Необходимо распределить эти 4000 фотографий по 400 папкам, чтобы в каждой папке было по 10 фотографий, названия папок могут быть, например, 1, 2, 3 ... n Может кто со скриптиком на баше помочь или как-то командами это помочь сделать? Буду премного благодарен

Ну чтото типа

find -name «*» | xargs -n 10 bash -c " ...; mv -t ... \«$@\»"

cvv ★★★★★ ()
Последнее исправление: cvv (всего исправлений: 1)
Ответ на: комментарий от miracle777

find -name «*»

Составить список фоток. Не самый удобный способ но работает на любом количестве - вплоть до миллиардов и триллионов.

xargs -n 10

Группировать фотки «по десять»

bash -c " ...; mv -t ... \«$@\»"

заготовка команды которая будет выполнена с каждым десятком фоток. Тут попробуйте сами ибо в описании недостаточно деталей. Можете начать с простого

bash -c «mv -t $(mktemp -d -p .) \«$@\»»

cvv ★★★★★ ()
Ответ на: комментарий от cvv

Не самый удобный способ но работает

У этого способа будут проблемы, если подкаталоги делать от текущего, причём даже при первом запуске, если файлов будет много.

vodz ★★★★★ ()
n=10; seq 200 | awk -v n="$n" '1; !(NR % n) {print a+=1}' | xargs -n$((n+1)) echo mv

, сначала посмотреть, а потом убрать echo, ни и 400 форков - будет небольшая задержка

anonymous ()
Ответ на: комментарий от anonymous

ну и создать нужное директории: mkdir {1..<num>}

anonymous ()
Ответ на: комментарий от anonymous

блин, до конца так и не понял смысл, можно полный вид команды? Первый способ не работал на большом числе файлов, второй вообще не смог понять как запустить, так как полной команды нет

miracle777 ()

$ n=1; d=1; while read f; do mkdir -p $d; mv «$f» $d; if [ $((n++)) -ge 10 ]; then n=1; ((d++)); fi; done < <(find -mindepth 1 -maxdepth 1 -type f)

$ find -type f -exec mv {} . \;; find -type d -delete

Может кому поможет, первая команда делает в точности то, что нужно в исходном каталоге, вторая - возвращает все к исходному виду

miracle777 ()
Ответ на: комментарий от vodz

Проблемы у find? А вы пробовали прочитать man?

cvv ★★★★★ ()
Ответ на: комментарий от cvv

Проблемы у find?

Проблемы у таких как вы, которые бросаются отвечать, не читая man.

Без -maxdepth вы получите бесконечный цикл. Да и в прочем вряд ли решение с ним удовлетворит TC-а, ибо результат будет — случайное раскидывание по каталогам, если сами файлы удаляются, так как после удаления принцип «по порядку помещения в каталог» будет нарушен.

vodz ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.