Мне нужно создать список всех файлов в определенном каталоге и обрезать его в списках X, содержащих каждый фиксированный объем данных файлов.

Например, у меня есть 95 ГБ данных.

  • создать список файлов (total.txt)
  • разделить total.txt на 3 списка:
    1. slice1.txt содержащий список первых 35 Гб файлов
    2. slice2.txt содержащий список следующих 35 Гб файлов
    3. slice3.txt содержащий список оставшихся файлов

Любой намек? Я гуглил и поиграл с find, awk, grep, но эта задача кажется действительно выше моей компетенции.

2 ответа2

0
while read filename; do cat $filename; done < total.txt | split -b 35G - slice

Это создаст "sliceaa", "sliceab", "sliceac", которые вы можете переименовать.

С другой реализацией split, вам, возможно, придется сказать -b 35000m

Если у вас есть Bash, вы можете написать

cat $(< total.txt) | split -b 35G - slice

Предположим, что нет сотен или тысяч имен файлов.

Создать total.txt

files=(*)
printf "%s\n" "${files[@]}" > total.txt
0

Вы можете попробовать использовать команду split для разделения ваших файлов:

split total.txt -b 4444160

Выше будет разделить total.txt на 35 ГБ файлов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .