PDA

Показать полную графическую версию : [решено] Склеивание файлов в папках


Тишина
14-11-2013, 13:54
ОС: Linux
ФС: ntfs
файлы: бинарные, различный объём от 1кб до 160 кб
колличество файлов: по прогнозу их будет около 1 миллиарда (свыше 2тб данных)

Задача: склеить все файлы из папки в один.

Подробности:
существует большое кол-во папок, например "qqq1", "qqq1 1", "qqq1 2"... .... "qqq1 N", в них находятся файлы примерно с таким именем "3332.file1", "3339.file1", "3412.file1" и т.д. по возрастанию индекса в имени (прирост "рандомный").
нужен батник, который будет работать по всем папкам и склеивать (в порядке увеличения индекса) содержимое каждой в отдельный файл, т.е. из папки "qqq1 4" получится "FILE_qqq1 4.dat".

примечание: папок и файлов очень много (на данный момент около 50 миллионов файлов по 18500 в каждой папке), желательно что бы можно было указать с какой папки начать и сколько папок будет учавствовать, дабы предотвратить зависания и прочие неприятности, индексы у папок идут от 1 до N

P.S. эта же задача, но с решением на WINDOWS
http://forum.oszone.net/showthread.php?p=2254369#post2254369

Тишина
02-04-2014, 13:24
#!/bin/bash

for i in `find -mindepth 1 -type d`
do
cat $i/* >> $i.file | sort -n
done



P.S. написал одно решение и максимально (как смог) его сократил
народ, есть более простой ("короткий") способ? лично я за минимализм кода =)




© OSzone.net 2001-2012