Можно сделать что-то вроде
ls *.txt | awk -F '[.-]' '{ if (f[$2,$1]) { print $0; }
else { f[$1,$2] = 1} }' | xargs rm
Это работает следующим образом: передайте имена соответствующих файлов в awk
. Для каждого файла проверьте, не был ли файл с обратным именем уже занесен в массив f
. Если да, выведите имя файла. Если нет, поместите его в массив f
. Используйте вывод программы awk
для удаления дубликатов файлов.
Блочные устройства не являются обычными файлами, они позволяют программам, таким как mount, выполнять над ними специальные функции, необходимые для правильной работы.
Устройство цикла - это устройство перевода, оно переводит вызовы блочных файлов в обычные вызовы файловой системы к определенному файлу. Вы можете использовать losetup
для создания полноценных устройств обратной петли, поддерживаемых файлом (будет отображаться как / dev / loopX
, а затем обрабатывать их как обычные блочные устройства или передать -o loop
для монтирования, чтобы сообщить ему о прозрачном создании блочного устройства. Вы также можете использовать losetup
для проверки устройств обратной петли и того, что они поддерживают.
Обратите внимание, что при современном монтировании он попытается обнаружить обычный файл и автоматически создаст для вас устройство обратной связи.Таким образом, вам не нужно , чтобы передавал ему параметр loop
.
Кроме того, технически bind mount - это место, где вы перемонтируете каталог в новое место (поэтому он монтируется дважды). Это можно сделать с помощью флага - bind
для монтирования. Я понимаю, что вы имеете в виду, но это может сбить с толку, поскольку термин bind имеет особое значение с точки зрения монтажа.
Редактировать: Ваша ментальная модель, по сути, верна, но вы можете думать о петлевых устройствах как об уровне абстракции, это позволяет монтированию взаимодействовать с любым файлом, как если бы это было блочное устройство, без необходимости понимать различия между чтение / запись в файловую систему или на необработанное блочное устройство - все это обрабатывает ядро. Все, что нужно знать команде mount, - это как попросить ядро настроить устройство цикла, а затем рассматривать его как блочное устройство; это упрощает код низкого уровня и позволяет всему, что может взаимодействовать с блочным устройством, вместо этого разговаривать с файлом без изменения.
Расплывчато описанное, петлевое крепление перенаправляет крепление как "петлевое устройство".
«Устройство цикла» эффективно представляет физический раздел (который обычно представляет собой последовательные блоки устройства), но должен интерпретироваться через файловую систему, в которой изображение находится в потенциально фрагментированном состоянии.
В отличие от физического раздела, при чтении каждого блока необходимо обращаться к базовой файловой системе. Он менее эффективен, но более удобен и позволяет использовать вложенные файловые системы разных типов.
Цикл mount -o
не технически идентичен операции mount
в большей степени, чем использование подкачки
для файл подкачки идентичен использованию swapon
для раздела подкачки.
На реальном разделе чтение и запись ограничены физическими границами раздела / цилиндра. Фрагментация запутывается файловой системой раздела.
В зацикленном изображении фрагментация скрыта за очевидно последовательным монтированием. Базовая файловая система обрабатывает фрагментацию файлов и представляет собой последовательный «раздел».
Это становится более очевидным в случае зашифрованных или сжатых образов дисков, таких как squashfs
.В таких случаях доступ к упомянутым блокам изображений осуществляется через базовую файловую систему, а затем они обрабатываются с помощью применимого API сжатия (или шифрования) для представления очевидно последовательного набора блоков устройства.
Короче говоря, ожидается, что «блочное устройство» будет последовательным списком «блоков устройства». Специальное устройство , созданное с помощью монтажа в петлю , делает вид, что потенциально непоследовательные блоки устройств различных размеров являются последовательными блоками устройств заранее определенного размера.