Средство проверки последовательности шестнадцатеричных чисел в Linux?

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

Btrfs имеет динамическое распределение inode, поэтому нет заполнения, как у вас с таблицами inode для ext4 (размер которых устанавливается во время создания файловой системы ext4).

XFS является динамической системой аналогичным образом, но имеет ограничение (процент файловой системы, который может использоваться для inodes), поэтому в этом случае, заполняете ли вы свое количество inode, зависит от установленного процента, а также от количества файлов. / размер файла

1
18.05.2015, 23:51
2 ответа

Учитывая входной файл hexlist.txt , это работает в kshи bash. Он использует утилиту numinterval. Если numintervalнедоступно, раскомментируйте функцию подделки :

.
# fake `numinterval` function
# numinterval() { printf '%s %s r - p\n' $(sed '1!{$!p}') | dc ; }

n=; eval printf '%s\\n' $(printf '$((16#%s\n)) ' $(<hexlist.txt)) | 
numinterval | grep -qw 1 || n=not ; echo All numbers are $n in sequence
0
27.01.2020, 23:16

Как сказано в другом ответе, было бы неплохо сделать это в awk, но древний awk (, вероятно, доступный в Solaris ), не понимает шестнадцатеричных чисел.

Быстрое решение — использовать wc -lи некоторую математику ksh:

#! /bin/ksh

first="0x$(head -n1 infile)"
last="0x$(tail -n1 infile)"
lines=$(wc -l <infile)

if [[ "$(( last - first + 1 - lines ))" -eq 0 ]]; then
    echo "All numbers are in sequence."
else
    echo "Numbers are not in sequence."
fi
2
27.01.2020, 23:16

Теги

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