#31
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Alex Korchmar написал(а) к Eugene Grosbein в Mar 18 06:21:03 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG> Это главный вопрос. Что говорит file на распакованный tar? говорю же - мне сперва бы разобраться с тем, что тут на диске, а тар потрошить как-нибудь потом (возможно еще и не поздно просто заново скопировать первоисточник) но судя по жалобам gnu tar - это обычный продукт bsd tar, с chily-расширениями возиться с ним сейчас особо и негде, там под 100G, а место у меня ограничено. > Alex --- ifmail v.2.15dev5.4 |
#32
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Alex Korchmar написал(а) к Andrew Kant в Mar 18 06:23:34 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Andrew Kant <Andrew.Kant@p1.f83.n469.z2.fidonet.org> wrote: AK> если есть исходный тар, то тебе не нужен find, сделай tar --list ок, давай паттерн для list. Задача, если кто не понял, удалить только кривые русские, а не все подряд. А я и набрать-то это не могу - нет у меня на клавиатуре таких клякс. > Alex --- ifmail v.2.15dev5.4 |
#33
|
|||
|
|||
tar: Can't translate pathname to UTF-8
Andrew Kant написал(а) к Alex Korchmar в Mar 18 08:45:24 по местному времени:
Нello Alex! Friday March 09 2018 06:23, Alex Korchmar wrote to Andrew Kant: AK> From: Alex Korchmar <noreply@linux.e-moe.ru> AK> Andrew Kant <Andrew.Kant@p1.f83.n469.z2.fidonet.org> wrote: AK>> если есть исходный тар, то тебе не нужен find, сделай tar --list AK> ок, давай паттерн для list. Задача, если кто не понял, удалить только AK> кривые русские, а не все подряд. !~ /^[a-zA-Z0-9\/._-]*$/ попробуй для начала, потом улучшай. Может быть имеет смысл смотреть не на !~, а на =~, чтоб уточнить кого не надо удалять. Я-то не вижу твоих данных, не могу оценть правильность/полноту предложенного шаблона. Good bye! Andrew --- GoldED+/W32 1.1.4.7 |
#34
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Eugene Grosbein написал(а) к Alex Korchmar в Mar 18 15:02:21 по местному времени:
09 марта 2018, пятница, в 06:21 NOVT, Alex Korchmar написал(а): EG>> Это главный вопрос. Что говорит file на распакованный tar? AK> говорю же - мне сперва бы разобраться с тем, что тут на диске Для этого очень полезно знать, что за вариант tar-формата был распакован. Eugene --- slrn/1.0.2 (FreeBSD) |
#35
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Alex Korchmar написал(а) к Andrew Kant в Mar 18 12:39:45 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Andrew Kant <Andrew.Kant@p1.f83.n469.z2.fidonet.org> wrote: AK> !~ /^[a-zA-Z0-9\/._-]*$/ попробуй для начала, потом улучшай. там 40G Я категорически не желаю проверять, что попало, а что не попало в паттерн. Нет ли других идей? AK> смысл смотреть не на !~, а на =~, чтоб уточнить кого не надо удалять. имеет смысл придумать паттерн/идею как удалить все файлы, содержащие херню в имени (а не как отфильтровать остальные - потому что очевидно что что-нибудь не предусмотришь. Что у нас умеет паттерны с hex/octal codes и не занимается идиотскими перекодировками и проверками? Я совершенно точно уверен, что валидных файлов с именами, содержащими символы >200 там нет. AK> вижу твоих данных, не могу оценть правильность/полноту предложенного очевидно, это вообще плохой подход. нам заведомо известно, какие файлы надо точно удалить. Мы можем нечаянно пропустить кого-то из них - это мусор на диске, можно найти потом или забить, если его будет немного. Вопрос только в том, как с помощью макаками писанных инструментов найти их на диске. > Alex P.S. вопрос распаковки тара снят окончательно - первоисточник жив. там, кстати, оказался utf8 на диске, C - в локали ;-) Но это freebsd6.2, у нее нет лишнего "ума". --- ifmail v.2.15dev5.4 |
#36
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Eugene Grosbein написал(а) к Alex Korchmar в Mar 18 18:30:02 по местному времени:
13 марта 2018, вторник, в 12:39 NOVT, Alex Korchmar написал(а): AK> Что у нас умеет паттерны с hex/octal codes и не занимается идиотскими AK> перекодировками и проверками? Я совершенно точно уверен, что валидных AK> файлов с именами, содержащими символы >200 там нет. perl, конечно. Поиск файлов с символами в диапазоне от 0xc8 до 0xff: find . -type f -print0 | xargs -0 perl -e 'print (join "\n", grep /[\xc8-\xff]/, @ARGV), "\n"' AK> P.S. вопрос распаковки тара снят окончательно - первоисточник жив. AK> там, кстати, оказался utf8 на диске, C - в локали ;-) AK> Но это freebsd6.2, у нее нет лишнего "ума". Что там в локали, совершенно неважно, так как в 6.2 был gnu tar, который по дефолту создаёт формат ustar, в котором кодировка не указывается, а имена с файловой системы сохраняются "как есть". Я даже не представляю, что нужно сделать, чтобы такой tar не распаковался "как есть" под нынешней FreeBSD, потому как и bsdtar, и gtar разворачивают такое без каких-либо попыток перекодировки и получается нормальный UTF-8 в именах на файловой системе. И неважно, какая локаль при этом была при распаковке. Eugene --- slrn/1.0.2 (FreeBSD) |
#37
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Alex Korchmar написал(а) к Eugene Grosbein в Mar 18 17:52:45 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG> perl, конечно. Поиск файлов с символами в диапазоне от 0xc8 до 0xff: надо же, хоть какая от него польза в системе EG> find . -type f -print0 | xargs -0 perl -e 'print (join "\n", grep EG> /[\xc8-\xff]/, @ARGV), "\n"' а если я это xargs rm скормлю - оно сработает, или опять начнет причудливо их интерпретировать? EG> Что там в локали, совершенно неважно, так как в 6.2 был gnu tar, и откуда тогда schily exts в этом таре? > Alex --- ifmail v.2.15dev5.4 |
#38
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Eugene Grosbein написал(а) к Alex Korchmar в Mar 18 22:13:25 по местному времени:
14 марта 2018, среда, в 17:52 NOVT, Alex Korchmar написал(а): EG>> find . -type f -print0 | xargs -0 perl -e 'print (join "\n", grep EG>> /[\xc8-\xff]/, @ARGV), "\n"' AK> а если я это xargs rm скормлю - оно сработает, или опять начнет причудливо AK> их интерпретировать? Сработает, только я бы вместо print и xargs rm сделал perl -e 'system "rm", grep ...' EG>> Что там в локали, совершенно неважно, так как в 6.2 был gnu tar, AK> и откуда тогда schily exts в этом таре? Не понял вопроса. Что за schily exts? И я тебя спрашивал, если ты забыл: что говорит file на распакованный tar? И сделай в зависимости от вывода file один из двух dd как в примере ниже: $ tar -cf posix.tar пример # koi8-r $ file posix.tar posix.tar: POSIX tar archive $ tar --format gnutar -cf gnutar.tar пример $ file gnutar.tar gnutar.tar: POSIX tar archive (GNU) $ dd bs=6 count=1 if=gnutar.tar 2>/dev/null пример $ dd if=posix.tar skip=1 2>/dev/null | head -1 | iconv -f utf-8 -t koi8-r 21 path=пример Eugene -- For the Colonel's Lady an' Judy O'Grady Are sisters under their skins! --- slrn/1.0.2 (FreeBSD) |
#39
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Alex Korchmar написал(а) к Eugene Grosbein в Mar 18 21:06:51 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG> Сработает, только я бы вместо print и xargs rm сделал EG> perl -e 'system "rm", grep ...' а оно про длину командной строки-то знает? AK>> и откуда тогда schily exts в этом таре? EG> Не понял вопроса. Что за schily exts? google for it? Какое-то г-но, добавляемое непойми зачем фрибсдшным таром во все архивы, чтобы при распаковке где-то еще не увидеть реальных ошибок за ворохом сообщений что оно не знает, что с этим делать. EG> И я тебя спрашивал, если ты забыл: что говорит file на распакованный tar? мне негде его распаковывать. линуксный говорит что /dev/stdin: POSIX tar archive но он соврет, не проверит. EG> И сделай в зависимости от вывода file один из двух dd как в примере ниже: там, повторяю, десятки гигабайт. русские имена начинаются далеко не с первого. Но в общем, я попробовал твой перловый скрипт использовать на вход тару. Локаль utf8. На выходе (уже просто в tar -cf ) - бнопня. В смысле - те же непечатаемые символы, ни разу не utf. zip у нас, хотя бы, не имеет "интеллекта"? > Alex --- ifmail v.2.15dev5.4 |
#40
|
|||
|
|||
Re: tar: Can't translate pathname to UTF-8
Eugene Grosbein написал(а) к Alex Korchmar в Mar 18 10:23:43 по местному времени:
14 марта 2018, среда, в 21:06 NOVT, Alex Korchmar написал(а): EG>> Сработает, только я бы вместо print и xargs rm сделал EG>> perl -e 'system "rm", grep ...' AK> а оно про длину командной строки-то знает? Оно не знает, но ему и не надо, так как оно уже после xargs -0 запущено будет, который знает, а grep список может только уменьшить. AK>>> и откуда тогда schily exts в этом таре? EG>> Не понял вопроса. Что за schily exts? AK> google for it? Какое-то г-но, добавляемое непойми зачем фрибсдшным таром во все Не было в 6.2 этого тара. EG>> И я тебя спрашивал, если ты забыл: что говорит file на распакованный tar? AK> мне негде его распаковывать. линуксный говорит что /dev/stdin: POSIX tar AK> archive AK> но он соврет, не проверит. file у всех один и тот же, только версии могут быть разные. Но мне кажется, ты недоговариваешь что-то существенное - откуда в картинке вообще линукс? EG>> И сделай в зависимости от вывода file один из двух dd как в примере ниже: AK> там, повторяю, десятки гигабайт. русские имена начинаются далеко не с первого. AK> Но в общем, я попробовал твой перловый скрипт использовать на вход тару. AK> Локаль utf8. На выходе (уже просто в tar -cf ) - бнопня. В смысле - те же AK> непечатаемые символы, ни разу не utf. Ты почти наверняка что-то делаешь не так. Показывай, как именно ты запускал перловый скрипт в связке с tar, со всеми ключиками последнего и не забудь сказать, как делал исходные файлы. Eugene -- Choose no career --- slrn/1.0.2 (FreeBSD) |