Распределить 500 000 файлов по десяти подкаталогам по 50 000 файлов в каждом

Еще один хороший вариант — использовать инструмент, написанный Дайном.

https://github.com/dyne/Tomb

Это хороший набор скриптов, которые обрабатывают ряд инструментов Unix для упрощения шифрования папок/файлов.

Главная страница инструмента здесь.

0
01.09.2021, 23:13
2 ответа
mv `ls *.abc | head -50000`./subfolder1/

Запустите эту команду 10 раз с разными именами вложенных папок.

Как вы хотите назвать 10 подпапок? Вместо того, чтобы запускать команду 10 раз, можно использовать цикл for.

Пояснение

  • ls *.abc | head -50000-Список первых 50 000 файлов из 5 00000 файлов.abc
  • mv <ls part>./subfolder1/-Переместите все 50 000 перечисленных файлов в каталог с именем subfolder1
0
02.09.2021, 07:23

Вы можете подойти к этому с помощью простого цикла оболочки bash:

#!/bin/bash

count=0
for file in *.abc
do
  dir=$(( count / 50000 ))
  (( count++ ))
  [ ! -d "$dir" ] && mkdir "$dir"
  echo mv -- "$file" "$dir"/
done

Это жестко задает количество файлов для перемещения в каждый каталог; каталоги именуются постепенно, начиная с нуля.

В гораздо более коротком примере (перемещение только 20 файлов по 10 за раз в 2 каталога ), вывод:

mv -- 01.abc 0/
mv -- 02.abc 0/
mv -- 03.abc 0/
mv -- 04.abc 0/
mv -- 05.abc 0/
mv -- 06.abc 0/
mv -- 07.abc 0/
mv -- 08.abc 0/
mv -- 09.abc 0/
mv -- 10.abc 0/
mv -- 11.abc 1/
mv -- 12.abc 1/
mv -- 13.abc 1/
mv -- 14.abc 1/
mv -- 15.abc 1/
mv -- 16.abc 1/
mv -- 17.abc 1/
mv -- 18.abc 1/
mv -- 19.abc 1/
mv -- 20.abc 1/

Удалите echo, если результаты кажутся вам правильными.

0
05.09.2021, 19:59

Теги

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