awk '{print > $0".txt" }' inputfile
создал бы один файл на уникальную строку в inputfile, названном в честь содержания тех строк (с a .txt
расширение). Но остерегайтесь этого, когда предел параллельных открытых файлов будет достигнут, некоторые awk
реализации перестанут работать.
Или
awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile
Пронумеровать выходные файлы.
losetup
(команда, обычно используемая для их настройки) скажет вам:
$ /sbin/losetup --list
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 0 0 /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso
Обратите внимание, что в более старых версиях вы можете использовать -a
вместо --list
, и это выводится в другом, а теперь уже устаревшем формате.
Информация поступает от /sys
:
$ cat /sys/class/block/loop0/loop/backing_file
/var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso
Другая, возможно более портативная, возможность получить ее с udisks:
$ udisksctl info -b /dev/loop0
/org/freedesktop/UDisks2/block_devices/loop0:
⋮
org.freedesktop.UDisks2.Loop:
Autoclear: false
BackingFile: /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso
SetupByUID: 1000
⋮
-lossetup
также с радостью удалит их для Вас, используя опцию -d
. Для этого требуется только устройство цикла в качестве параметра; его не волнует файл/устройство резервного копирования.
Я бы еще добавил следующее. С помощью kpartx можно проверить, куда сопоставлены устройства. Например:
%> sudo kpartx -lv /dev/loop0
loop0p1 : 0 122880 /dev/loop0 8192
loop0p2 : 0 8257536 /dev/loop0 131072
Это полезно, когда вы забыли, куда сопоставлены файлы. Конечно, loop0p1 и loop0p2 отображены в каталог /dev/mapper.