Каждый раз, когда find
ожидает число, можно поместить a +
знак перед ним для значения больше, чем это число или a -
подайте знак иметь в виду меньше, чем это число. Это строгие неравенства: +3
и -7
средства 4, 5 или 6.
С -size
основной, необходимо добавить суффикс c
указать, что число составляет многие байты. Можно связать несколько основных устройств для взятия их соединения (в некоторых версиях, можно поместить -a
или -and
между ними). Таким образом:
find . -size +385c -size -391c -delete
В zsh можно использовать L
спецификатор шарика. Единица по умолчанию является байтами; как find
, символы +
и -
укажите на строгие неравенства.
rm *(L+385-391)
(Команда выше не рекурсивно вызывает в подкаталоги; при необходимости в этом добавить **/
перед шаблоном.)
Если Вы знаете точно, какой регион данных Вы хотите скопировать, можно использовать dd
:
dd conv=notrunc if=input of=output seek=123456 skip=123456 bs=4k count=128
Это скопировало бы 128 4k блоков с входа для вывода запуска в 123 456.
Было бы благоразумно скопировать блоки, которые Вы собираетесь перезаписать сначала:
dd if=output skip=123456 bs=4k count=128 of=output-backup-bs4k-pos123456
Если Вы НЕ знаете, какой регион данных скопировать или не уверены в этом, GNU dd
оказывается, знает sparse
.
dd conv=notrunc,sparse if=input of=output bs=4k
Это скопировало бы каждый ненулевой входной блок 4k для вывода. Использовать bs=512
если Ваши блоки меньше!
Обратите внимание, что нет резервного копирования с этим методом, таким образом, Вы лучше копируете файл, если это важно.
Попробовать что-то вроде этого?
dd if=part-one/ddrescue_image bs=1 count=227966006784 >result
dd if=part-two/ddrescue_image bs=1 seek=227966006785 >>result
Маленький размер блока сделает это очень медленным; если можно осуществить рефакторинг, чтобы использовать больший размер блока и все еще приземлиться при корректном смещении, которое должно сделать его намного быстрее.
Если Вы не можете сделать этого, разделив операцию на больше dd
вызовы являются, вероятно, goid идеей - чтение с большим размером блока такой как 65 536 к ближайшей 64K границе, затем возьмите его медленный оттуда (возможно, понижение к 1K размеру блока к ближайшей 1K границе прежде, чем идти полностью в отдельные байты), затем пойдите быстрее снова, после того как Вы сделаны с мелкомодульным управлением.