сценарий для конкатенации нескольких текстовых файлов, найденных в архивах zip, вложенных в нескольких папках

У меня есть 30 ГБ текстовых файлов и файлов HTML от различного исходного наложения во вложенной иерархии папок. Все эти папки находятся в моем корневом каталоге в папке, названной zipFiles. Иерархия является 20 уровнями, глубоко некоторый переходит глубже, чем другие. Я хочу связать текст ВСЕХ этих файлов в один огромный текстовый файл для использования в качестве RDD в проекте Spark. Очевидно, я должен был бы преобразовать файлы HTML в текст путем снятия HTML, форматирующего коды также.

Мой подход был бы: выполните итерации через вложенную иерархию папок (не знайте, как сделать это в ударе), разархивировали файл, если это - HTML, преобразовывают его для отправки текстовых сообщений, добавляет это к ОГРОМНОМУ результату

Проблемы, которые я вижу с этим, разряжают поршень - если я делаю все это в памяти, просто добавив текст к переменной в коде.

Если я открываю ОГРОМНЫЙ файл от диска, запишите в него и закройте файл, то я перегружаю диск, и он также будет медленно идти.

Удар, пишущий сценарий моего единственного решения, потому что это пугает меня. Я предполагаю, что мог сделать это в Python, но затем я должен знать, как разархивировать в Python и сделать HTML для отправки текстовых сообщений преобразованию также.

2
задан 14 February 2016 в 21:09

1 ответ

find хороший инструмент, когда необходимо сделать что-то рекурсивно в каталогах. zcat может

, Мой подход был бы чем-то вроде этого:

find /home/username/zipFiles -type f -name "*.zip" -exec zcat {} \; > outputfile.txt

Пример:

$ df > testfile.txt                                            
$ zip testArchive testfile.txt
  adding: testfile.txt (deflated 54%)
$ find . -maxdepth 1 -name "*.zip" -exec zcat {} \;            
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             1954212        4   1954208   1% /dev
tmpfs             393160     3392    389768   1% /run
/dev/sda1      115247656 82424300  26946008  76% /
none                   4        0         4   0% /sys/fs/cgroup
none                5120        0      5120   0% /run/lock
none             1965792       80   1965712   1% /run/shm
none              102400       32    102368   1% /run/user
cgmfs                100        0       100   0% /run/cgmanager/fs
/dev/sdb1       30343056       48  30343008   1% /media/xieerqi/SDCZ43-032G
2
ответ дан 2 December 2019 в 03:49

Другие вопросы по тегам:

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