Если вы перечислите имена файлов в файле с именем ~/filelist.txt
, а затем перейдите в каталог, где находятся все файлы, следующий скрипт должен переместить их в подкаталоги с управляемым размером, по одному на каждый день, когда файлы были созданы:-
cat ~/filelist.txt | \
while f=`line`; \
do ( d="`ls -l --time-style=+%y-%m-%d "$f"|awk '{print $6}'`"; \
[ -d "$d" ] || mkdir "$d"; \
mv "$f" "$d"/ \
) \
done
Это займет много времени, потому что вы будете запускать две или три программы для каждого файла, а также суб-оболочку bash
.
Я предлагаю вам сначала проверить его, прежде чем начать, используя head
вместо cat
и добавляя echo
к командам mkdir
и mv
. Конечно, для этого теста mkdir
будет неоднократно перечисляться для файлов с одинаковой датой, поскольку каталоги фактически не создаются. Если вы повторите с head -n 1000
или более, вы должны получить представление о том, сколько файлов попадет в каждый каталог.
Если их слишком много или слишком мало, вы можете изменить формат стиля времени, чтобы сделать его еженедельным или ежечасным архивом. Вы должны стремиться к 1000-10000 файлов в каждом каталоге, что даст вам 700-7000 каталогов, оба управляемых.
После того, как они перемещены в подкаталоги, вы можете сжать каждый каталог, что должно дать вам около 7000 файлов для перемещения и небольшую часть 650 ГБ для копирования, если они являются текстовыми файлами.