Re: Получение информации о файлах в rar архиве
Hello! On Monday 15 February 2010 21:35:27 Yuriy Kaminskiy wrote: > К тому же 7z > 1) более нормально поддерживает кодировки имён файлов в zip (его можно убедить > их не трогать, в результате чего они поддаются автодетекту кодировки), > 2) и держит чёртову уймищу более других архивов (из существенного - iso-9660, > chm, msi, ole compound document). Присылайте фильтры документов, добавлю. У меня была задача индексации архивов библиотек, а там только rar и zip, так что касаемо других форматов ничего сказать не могу, может, и проще их через 7z поддерживать. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Hello! On Monday 15 February 2010 19:39:01 Serhiy Storchaka wrote: > Alexey Pechnikov wrote: > > On Monday 15 February 2010 17:35:47 Maxim Nikulin wrote: > >> Алексей, а в чем проблемы с p7zip-rar? формат вывода вроде тот же, что и > >> у 7z. > > > > Тогда для обработки rar-архивов придется ставить 7zfull, и ладно бы еще он > > свободный был. rar при желании можно и свободный поставить, если обработка > > кириллицы в архивах и формата новых версий некритична. > > С каких пор LGPL перестала быть свободной? $ aptitude show p7zip-rar Раздел: non-free/utils Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > On Monday 15 February 2010 17:35:47 Maxim Nikulin wrote: >> Алексей, а в чем проблемы с p7zip-rar? формат вывода вроде тот же, что и >> у 7z. > > Тогда для обработки rar-архивов придется ставить 7zfull, и ладно бы еще он > свободный был. rar при желании можно и свободный поставить, если обработка > кириллицы в архивах и формата новых версий некритична. С каких пор LGPL перестала быть свободной? -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hlbtcc$ei...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > Откуда настойчивое желание вручную всем утилитам разделитель указывать? > По умолчанию таб, пусть таковым и остается, зачем менять-то? OFS по умолчанию пробел, зачем менять-то? Откуда у человека, путающегося с пробелами и табуляциями в редакторе, желание использовать эту самую табуляцию как разделитель? -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hlbt4a$ei...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Hello! On Monday 15 February 2010 17:35:47 Maxim Nikulin wrote: > Алексей, а в чем проблемы с p7zip-rar? формат вывода вроде тот же, что и > у 7z. Тогда для обработки rar-архивов придется ставить 7zfull, и ладно бы еще он свободный был. rar при желании можно и свободный поставить, если обработка кириллицы в архивах и формата новых версий некритична. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Hello! On Monday 15 February 2010 19:11:27 Serhiy Storchaka wrote: > > Имя файла - последнее в строке. Так что задача получения имени файла > > идентична cut -f$N- возвращает "конец строки, включая поле $N" > > cut -d ' ' -f$N- не сложнее. > Откуда настойчивое желание вручную всем утилитам разделитель указывать? По умолчанию таб, пусть таковым и остается, зачем менять-то? Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > Имя файла - последнее в строке. Так что задача получения имени файла > идентична cut -f$N- возвращает "конец строки, включая поле $N" cut -d ' ' -f$N- не сложнее. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hlbroq$b5...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: Интересует размер файла, дата добавления в архив или дата последней модификации, имя файла в архиве. Для zip,7z, etc. все легко и просто - вывели список файлов в архве, грепнули, позвали awk и готово. Но вот rar архив отличился - имя файла выдает _первым_ аргументом, а не последним! Спрашивается, что с этим финтом делать. Алексей, а в чем проблемы с p7zip-rar? формат вывода вроде тот же, что и у 7z. -- Максим Никулин -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4b795bc3.3010...@gmail.com
Re: Получение информации о файлах в rar архиве
Hello! On Sunday 14 February 2010 22:34:20 Serhiy Storchaka wrote: > >> Если уж так > >> хочется использовать табуляцию, то OFS="\t" (или конкатенация вместо > >> запятой). Но причин предпочесть табуляцию пробелу нет (не забываем, что > >> табуляция тоже может встретится в имени). > > > > В имени _файла в архиве_? Сомневаюсь. > > Запросто. Даже "\n" схарчит, но тут уж ничего не поделаешь, неоднозначность > не разрешить. Имя файла - последнее в строке. Так что задача получения имени файла идентична cut -f$N- возвращает "конец строки, включая поле $N" Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > On Sunday 14 February 2010 21:36:55 Serhiy Storchaka wrote: >> Лишнее, потому что на самом деле разделитель получается " \t ". > > Это только если запятые ставить. Вот именно. >> Если уж так >> хочется использовать табуляцию, то OFS="\t" (или конкатенация вместо >> запятой). Но причин предпочесть табуляцию пробелу нет (не забываем, что >> табуляция тоже может встретится в имени). > > В имени _файла в архиве_? Сомневаюсь. Запросто. Даже "\n" схарчит, но тут уж ничего не поделаешь, неоднозначность не разрешить. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hl9iih$1c...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Hello! On Sunday 14 February 2010 21:36:55 Serhiy Storchaka wrote: > Лишнее, потому что на самом деле разделитель получается " \t ". Это только если запятые ставить. > Если уж так > хочется использовать табуляцию, то OFS="\t" (или конкатенация вместо > запятой). Но причин предпочесть табуляцию пробелу нет (не забываем, что > табуляция тоже может встретится в имени). В имени _файла в архиве_? Сомневаюсь. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > On Sunday 14 February 2010 20:18:18 Serhiy Storchaka wrote: >> Можно и так (только "\t" лишние). > > \t не лишние, поскольку результат еще надо потом разобрать на поля и в > базу сложить. Я там на всякий случай зарезервировал 4 поля на усмотрение > пользователя, ежели кому захочется дополнительную информацию собирать. > А уж распарсить строку с фиксированным числом полей, разделенных табом, > далее уже элементарно. Лишнее, потому что на самом деле разделитель получается " \t ". Если уж так хочется использовать табуляцию, то OFS="\t" (или конкатенация вместо запятой). Но причин предпочесть табуляцию пробелу нет (не забываем, что табуляция тоже может встретится в имени). -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hl9f71$o7...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Hello! On Sunday 14 February 2010 20:18:18 Serhiy Storchaka wrote: > > awk 'BEGIN {OUT=0} /^-/ {BASE=NR; OUT=!OUT} /^[^-]/ { if (OUT) { if > > ((NR-BASE)%2) { FILENAME=substr($0,2) } else {print $1, "\t", $4, $5, > > "\t", FILENAME } } }' > > Можно и так (только "\t" лишние). \t не лишние, поскольку результат еще надо потом разобрать на поля и в базу сложить. Я там на всякий случай зарезервировал 4 поля на усмотрение пользователя, ежели кому захочется дополнительную информацию собирать. А уж распарсить строку с фиксированным числом полей, разделенных табом, далее уже элементарно. > Или короче: > > awk '/^-+$/ {OUT+=1; next} > OUT==1 {FILENAME=substr($0,2); getline; print $1, $4, $5, FILENAME}' Здорово, мне нравится. Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Serhiy Storchaka wrote: > Можно и на чистом sed-е сделать. sed -nre '1,/^-+$/d;/^-+$/,$d;N;s/ (.*)\n +([0-9]+) +[0-9]+ +[0-9]+% +([0-9]+-[0-9]+-[0-9]+) +([0-9]+:[0-9]+) .*$/\2 \3 \4 \1/p' Но на shell или скриптовом языке общего назначения разумеется гибче будет. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hl9b61$b2...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > awk 'BEGIN {OUT=0} /^-/ {BASE=NR; OUT=!OUT} /^[^-]/ { if (OUT) { if > ((NR-BASE)%2) { FILENAME=substr($0,2) } else {print $1, "\t", $4, $5, > "\t", FILENAME } } }' Можно и так (только "\t" лишние). Или короче: awk '/^-+$/ {OUT+=1; next} OUT==1 {FILENAME=substr($0,2); getline; print $1, $4, $5, FILENAME}' -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hl9ajg$8p...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > Фантастика! А если в архиве поддиректории есть, возможно в такой же формат > привести? sed -re '1,/^-+$/d;/^-+$/,$d' \ | while read name && read size packed ratio date time attr crc meth ver do echo "$size $date $time $name" done Или сразу вместо echo исполнять необходимые действия. Можно и на чистом sed-е сделать. Ну а на перле/питоне/тикле будет не сложнее. > То есть в зависимости индексатора нужно ставить non-free версию? unrar | rar Нет нужды в unrar, если rar уже стоит. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hl99h8$6s...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Hello! On Sunday 14 February 2010 18:47:13 Alexey Pechnikov wrote: > если в архиве поддиректории есть, возможно в такой же формат привести? Вот так получается: rar v A_Kiselev_Polkovodtsyi_i_voenachalniki_Velikoy_Otechestvennoy_voynyi.rar | awk 'BEGIN {OUT=0} /^-/ {BASE=NR; OUT=!OUT} /^[^-]/ { if (OUT) { if ((NR-BASE)%2) { FILENAME=substr($0,2) } else {print $1, "\t", $4, $5, "\t", FILENAME } } }' Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Hello! On Sunday 14 February 2010 17:32:41 Serhiy Storchaka wrote: > sed -nre '/^-+$/,/^-+$/{s/ (.*) +([0-9]+) +[0-9]+ +[0-9]+% > +([0-9]+-[0-9]+-[0-9]+) +([0-9]+:[0-9]+) +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+$/\2 \3 > \4 \1/p}' Фантастика! А если в архиве поддиректории есть, возможно в такой же формат привести? $ rar vt A_Kiselev_Polkovodtsyi_i_voenachalniki_Velikoy_Otechestvennoy_voynyi.rar RAR 3.91 Copyright (c) 1993-2009 Alexander Roshal 12 Dec 2009 Shareware version Type RAR -? for help Archive A_Kiselev_Polkovodtsyi_i_voenachalniki_Velikoy_Otechestvennoy_voynyi.rar Pathname/Comment Size Packed Ratio Date Time Attr CRC Meth Ver Host OSSolid Old --- полководцы 00 0% 07-08-08 20:52 .D. m0 2.0 Win95/NT No No полководцы/полководцы.doc 3043328 1704158 55% 07-08-08 20:48 .A. D3016AC6 m3g 2.9 Win95/NT No No полководцы/полководцы_218x380.jpg 2778827788 100% 07-08-08 20:51 .A. 991E8D19 m0g 2.9 Win95/NT No No --- 3 3071116 1731946 56% > > P.S. unrar-free кириллицу в именах не понимает. Это лечится или только > > unrar-nonfree придется использовать? > > Можно поиграться локалью и перекодировками. Костыль тот ещё будет. В любом > случае большинство архивов rar сейчас версии 3+, поэтому unrar-nonfree > неприменим. То есть в зависимости индексатора нужно ставить non-free версию? Best regards, Alexey Pechnikov. http://pechnikov.tel/
Re: Получение информации о файлах в rar архиве
Andrey Rahmatullin wrote: > On Sun, Feb 14, 2010 at 04:32:41PM +0200, Serhiy Storchaka wrote: >> Можно поиграться локалью и перекодировками. Костыль тот ещё будет. В >> любом случае большинство архивов rar сейчас версии 3+, поэтому >> unrar-nonfree неприменим. > *unrar-free Да. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hl91q3$gn...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov wrote: > Интересует размер файла, дата добавления в архив или дата последней > модификации, имя файла в архиве. Для zip,7z, etc. все легко и просто - > вывели список файлов в архве, грепнули, позвали awk и готово. Но вот > rar архив отличился - имя файла выдает _первым_ аргументом, а не > последним! Спрашивается, что с этим финтом делать. Думал про реверс > строки - но потом придется как-то соединять с отдельно извлекаемыми > именами файлов. Возможно, что из подробного листинга надо вычесть > краткий (только имена файлов) и потом распарсить - но можно ли это > сделать в шелле и без создания временных файлов? sed -nre '/^-+$/,/^-+$/{s/ (.*) +([0-9]+) +[0-9]+ +[0-9]+% +([0-9]+-[0-9]+-[0-9]+) +([0-9]+:[0-9]+) +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+$/\2 \3 \4 \1/p}' > P.S. unrar-free кириллицу в именах не понимает. Это лечится или только > unrar-nonfree придется использовать? Можно поиграться локалью и перекодировками. Костыль тот ещё будет. В любом случае большинство архивов rar сейчас версии 3+, поэтому unrar-nonfree неприменим. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/hl90t5$eg...@ger.gmane.org
Re: Получение информации о файлах в rar архиве
Alexey Pechnikov пишет: Hello! $ unrar l A_A_Bayatev_Azbuka_zhilya._Zhilischnyiy_kodeks_ot_A_do_Ya.rar UNRAR 3.80 beta 2 freeware Copyright (c) 1993-2008 Alexander Roshal Archive A_A_Bayatev_Azbuka_zhilya._Zhilischnyiy_kodeks_ot_A_do_Ya.rar Попробуйте не l, а v. unrar v A_A_Bayatev_Azbuka_zhilya._Zhilischnyiy_kodeks_ot_A_do_Ya.rar Имя файла в архиве будет на отдельной строке, а остальное легко парсится. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4b77ffc7.8010...@mail.ru
Получение информации о файлах в rar архиве
Hello! Интересует размер файла, дата добавления в архив или дата последней модификации, имя файла в архиве. Для zip,7z, etc. все легко и просто - вывели список файлов в архве, грепнули, позвали awk и готово. Но вот rar архив отличился - имя файла выдает _первым_ аргументом, а не последним! Спрашивается, что с этим финтом делать. Думал про реверс строки - но потом придется как-то соединять с отдельно извлекаемыми именами файлов. Возможно, что из подробного листинга надо вычесть краткий (только имена файлов) и потом распарсить - но можно ли это сделать в шелле и без создания временных файлов? Если просто плюнуть на размер файлов и дату добавления, то ранжировать результат поиска не получится, а хотелось бы. $ unrar l A_A_Bayatev_Azbuka_zhilya._Zhilischnyiy_kodeks_ot_A_do_Ya.rar UNRAR 3.80 beta 2 freeware Copyright (c) 1993-2008 Alexander Roshal Archive A_A_Bayatev_Azbuka_zhilya._Zhilischnyiy_kodeks_ot_A_do_Ya.rar Name Size Packed Ratio Date Time Attr CRC Meth Ver --- Азбука жилья. Жилищный кодекс от А до Я.pdf 1477661 1443226 97% 07-07-08 19:21 .A. 4622E342 m5f 2.9 --- 1 1477661 1443226 97% $ unrar lb A_A_Bayatev_Azbuka_zhilya._Zhilischnyiy_kodeks_ot_A_do_Ya.rar Азбука жилья. Жилищный кодекс от А до Я.pdf В общем, вижу два потенциальных пути решения, но не уверен, что они реализуемы при заданных ограничениях, и вдобавок оба пути - закоулками. Есть ли более прямой путь? P.S. unrar-free кириллицу в именах не понимает. Это лечится или только unrar-nonfree придется использовать? Best regards, Alexey Pechnikov. http://pechnikov.tel/