LINUX.ORG.RU

правильное имя файла 2

 


0

1

Извините, у меня такое впервые, что мой вопрос никто не понимает:)

Я скачиваю страницу «video.sibnet.ru/rating» wget'ом, парсю все ссылки на скачивание роликов в $list, парсю описания(названия в alt="...") к этим роликам в $rus_list, потом скачиваю wget «${list[$i]}» -O «${rus_list[$i]}.flv».

Дело в том, что названия роликов составляются людьми и там могут быть недопустимые символы, например «/»(других не знаю). Так вот, какие символы надо заэкранировать, а какие вообще убрать из ${rus_list[$i]}, чтобы стало корректное имя файла(или чтобы wget не заругался)?



Последнее исправление: cetjs2 (всего исправлений: 3)

Воооот, ты явно делаешь успехи. :)

Ну сделай еще один проход по $rus_list и замени все спецсимволы на пробелы, например.

strangeman ★★★★
()

какие символы надо заэкранировать, а какие вообще убрать из ${rus_list[$i]}, чтобы стало корректное имя файла(или чтобы wget не заругался)?

Пардон, невнимательно прочел.

На имя файла ограничение накладывает файловая система. Следовательно, идешь сюда: http://ru.wikipedia.org/wiki/Сравнение_файловых_систем#.D0.9E.D0.B3.D1.80.D0...., выбираешь свою файловую систему (а также те, куда потенциально эти файлы ты можешь копировать) и исключаешь указанные символы из имен. А вообще, я бы убирал вот эти символы: + { } ; " \ / = ? ~ ( ) < > & * | $, чисто на всякий случай.

strangeman ★★★★
()

недопустимые символы, например «/»(других не знаю).

В POSIX-системах только два недопустимых символа - '/' и '0x0', первый из-за специспользования, второй из-за C-шного API. Допустимы не только неотображаемые символы, но и управляющие (\n, \t, и т.д.).
Так что wget ругаться не будет, пока ты передаешь ему параметр аккуратно, в кавычках, как у тебя и написано. Просто в один прекрасный момент ты обязательно напорешься на что-нибудь, состоящее только из \n, например. И зачем тебе такая радость в твоей файловой системе?
Кстати, а пустых описаний не бывает?

ABW ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.