Групповые файлы в средний размер самого большого файла

Чтобы BIOS загружал Mint, вам нужен загрузчик, и вы можете воспользоваться следующими способами:

1- Живая система: { {1}} при использовании unetbootin или любого другого программного обеспечения, которое вы предпочитаете, изменения в системе (mint) не поддерживаются.

2- Постоянная система: вы отключаете или отключаете внутренний жесткий диск, чтобы не испортить загрузчик, а затем загружаете Mint с третьего носителя (live USB или DVD) и устанавливаете его на SSD, как вы бы с вашим внутренним приводом.

0
27.11.2018, 08:12
2 ответа
#!/usr/bin/env zsh

# To care about hidden filenames:
#setopt GLOB_DOTS

# Load the zstat builtin
zmodload -F zsh/stat b:zstat

# Get the regular files in the current directory,
# ordered by size (largest first)
files=(./*(.OL) )

# Precalculate the filesizes
typeset -A filesizes
for file in "${files[@]}"; do
    filesizes[$file]=$( zstat +size "$file" )
done

# The maximum size of a bin is the size of the largest file
maxsize=${filesizes[${files[1]}]}

binsizes=()
typeset -A filebins
for file in "${files[@]}"; do
    filesize=${filesizes[$file]}
    bin=1   # try fitting into first bin first
    ok=0    # haven't yet found a bin for this file
    for binsize in "${binsizes[@]}"; do
        if (( filesize + binsize <= maxsize )); then
            # File fits in this bin,
            # update bin size and place file in bin
            binsizes[$bin]=$(( filesize + binsize ))
            filebins[$file]=$bin
            ok=1    # now we're good
            break
        fi
        # Try next bin
        bin=$(( bin + 1 ))
    done

    if [ "$ok" -eq 0 ]; then
        # Wasn't able to fit file in existing bin,
        # create new bin
        binsizes+=( "$filesize" )
        filebins[$file]=${#binsizes[@]}
    fi
done

# Do final output
printf 'Bin max size = %d\n' "$maxsize"
for file in "${files[@]}"; do
    printf '%d: %s (file size=%d / bin size=%d)\n' "${filebins[$file]}" "$file" \
        "${filesizes[$file]}" "${binsizes[$filebins[$file]]}"
done | sort -n

Приведенный выше zshсценарий оболочки объединяет все файлы в текущем каталоге с максимальным размером ячейки, строго исходя из размера самого большого файла. Он реализует первый алгоритм подбора -с файлами, упорядоченными по уменьшению размера. Это то, что называется алгоритмом «FFD» в статье Википедии «Проблема упаковки в контейнер» . Алгоритм "MFFD" не -тривиален для реализации в zshменее чем в 200 или около того строк кода, поэтому я не буду публиковать его здесь.

Тестирование:

$ ls -l
total 450816
-rw-r--r--  1 kk  wheel  10485760 Jan 19 23:53 file-10.log
-rw-r--r--  1 kk  wheel  20971520 Jan 19 23:53 file-20.log
-rw-r--r--  1 kk  wheel  31457280 Jan 19 23:53 file-30.log
-rw-r--r--  1 kk  wheel  41943040 Jan 19 23:53 file-40.log
-rw-r--r--  1 kk  wheel  52428800 Jan 19 23:53 file-50.log
-rw-r--r--  1 kk  wheel  73400320 Jan 19 23:53 file-70.log
$ zsh../script.sh
Bin max size = 73400320
1:./file-70.log (file size=73400320 / bin size=73400320)
2:./file-20.log (file size=20971520 / bin size=73400320)
2:./file-50.log (file size=52428800 / bin size=73400320)
3:./file-30.log (file size=31457280 / bin size=73400320)
3:./file-40.log (file size=41943040 / bin size=73400320)
4:./file-10.log (file size=10485760 / bin size=10485760)

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

0
28.01.2020, 04:07

Похоже, что это в значительной степени эквивалентно проблеме упаковки в контейнеры .

Задача Bin Packing представляет собой NP -сложную задачу, поэтому для ее решения не существует известного способа быстрого перебора (перебора всех вариантов в каком-то разумном порядке, что исключает глупые попытки, такие как добавление дополнительных файлов в уже слишком большой группа )— это то, что нужно.

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

0
28.01.2020, 04:07

Теги

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