Да, обычно это делается с помощью драйвера ядра, который можно либо загрузить как модуль ядра, либо скомпилировать в ядро.
Вы можете ознакомиться с похожими драйверами файловой системы и узнать, как они работают здесь .
Эти драйверы, вероятно, используют внутренние функции ядра для доступа к устройствам хранения в виде блоков байтов, но вы также можете использовать блочные устройства, представленные драйверами в папках блочных устройств и символьных устройств .
Вы не можете легко отсортировать часть вывода одним способом, но сделать исключение другим способом.
Если бы только 999
и 000
были последовательностями за одну минуту, вы могли бы попытаться разбить имя файла на поля и отсортировать последнее поле (счетчика последовательности )в порядке убывания. Но это не сработает, потому что ваш пример показывает 995
и 996
также в одну и ту же минуту (20200420_1755
), и к ним также будет применяться тот же критерий сортировки (, то есть вы получите 996
, за которым следует 995
). ].
Итак, чтобы справиться с этой конкретной ситуацией, мы используем некоторые awk
. Код преобразует ваш трехзначный порядковый номер обратно в правильное счетное значение, сортирует по нему, а затем снова удаляет его
ls node* |
sort | # First pass attempt
awk -F_ '
BEGIN { OFS = FS } # Delimiter always "_"
(oseq % 1000) == 999 { thousands++ } # After previous 999 add 1000
{ seq = $NF + (thousands * 1000) } # Convert sequence into value
seq < oseq && (seq % 1000) < 500 { seq += 1000 } # Special case
{ $5 = seq; oseq = seq; print } # Append counter, output result
' |
sort -t_ -n -k5,6 | # Sort by counter
cut -d_ -f1-4 # Strip it off
Результат с использованием вашего примера набора данных
node55_20200420_1755_995
node55_20200420_1755_996
node55_20200420_1756_997
node55_20200420_1756_998
node55_20200420_1757_999
node55_20200420_1757_001
node55_20200420_1758_002
node55_20200420_1758_003
Этот код не является пуленепробиваемым. Если вы действительно хотите генерировать более 100 экземпляров за одну минуту, вам не следует использовать только трехзначный порядковый номер.