Я не могу объяснить €â”
, Я ожидал бы │
который является интерпретацией Windows 1252 байтов, которые кодируют │
в UTF-8. │
то, что Tmux использует для вертикальных границ между окнами. Но у Вас очевидно есть несоответствие кодирования.
Выполненный locale
видеть, каковы Ваши настройки локали. Собственный порт Windows Rxvt в Cygwin не поддерживает UTF-8, таким образом, необходимо установить 8-разрядную локаль. А именно, LC_CTYPE
категория не должна заканчиваться в utf8
(или utf-8
или UTF8
или UTF-8
).
Действительное решение состоит в том, чтобы использовать MinTTY (это поставляется с Cygwin), или PuTTYcyg. Оба получены из PuTTY и поддерживают UTF-8. См. также, Как Вы настраиваете машину Windows для пользователя Linux?
Я не думаю, что Вы можете. В конце концов, использование -r
рекурсивная опция загрузки в основном просит, чтобы wget искал ссылки (в -l
уровни), и ссылки только найдены в файлах HTML. Так wget таким образом должен загрузить и проанализировать файлы HTML, ища ссылки и на большее количество файлов HTML и на mp3 файлов.
Если Вы уже создали список ссылок, почему Вы просто не используете fgrep ".mp3"
создать новый список с только mp3 файлы и использовать это в качестве link_source_file для wget? Поскольку wget не загрузит файлов HTML, он не найдет больше ссылок, таким образом, можно будет отбросить -r -l
и вероятно несколько других опций также - просто сохраняют -i
(и -A
, хотя список уже только содержит просто mp3 файлы). Используйте -x
опция вызвать создание файловой иерархии, даже без -r
.
Короче говоря, если Вы хотите пересечь сайт рекурсивно, необходимо позволить wget загружать и анализировать файлы HTML, даже если это не сохраняет их.
Альтернатива должна была бы использовать wget для загрузки всего нескольких уровней файлов HTML. Затем получите ссылки из этих файлов вручную и создайте список со всеми mp3 файлами, которые Вы нашли (рысь, sed, и fgrep очень поможет для этого). Или если Вы знаете что-то об организации сайта, генерируете список файлов, Вы хотите некоторым другим способом (например, использование сценария оболочки для создания списка со строками как:
http://www.sagar.com/1/song.mp3
http://www.sagar.com/2/song.mp3
http://www.sagar.com/3/song.mp3
http://www.sagar.com/100/song.mp3
Ручной подход с grep.
Запустите в пустом каталоге и загрузите все файлы HTML в своем списке нерекурсивно. Добавьте --convert-links
опции так любые относительные ссылки на файлы MP3 будут преобразованы в полные. Таким образом, у Вас есть только файлы как тот, Вы отправили выше с одной или несколькими ссылками на файлы MP3.
Затем можно сделать:
(for f in *
do
grep -P --only-matching '(?<=href=")[^ "]*\.mp3' foo.html "$f"
# rm "$f"
done) | xargs wget
Не учтите #
перед rm
если Вы хотите удалить загруженные non-mp3 файлы.
Это может все еще перестать работать, если, например, хост отказывается загружать, когда ссылающийся домен отсутствует или неправильно.
rm
удалит входные файлы даже для ошибки, как то, когда связь прервется.Не очень. Это также удалит любые другие файлы в каталоге, включая mp3 файлы. Я отредактирую, чтобы прокомментировать rm
. (это мог быть a mv
к subdir, или использующий a &&
между grep
и rm
по крайней мере.)
– Volker Siegel
20.08.2014, 20:58
rm
, Я действительно писал, что Вы запускаете с пустого каталога, таким образом, существуют только файлы HTML там при выполнении команды - если она перестала работать, Вы повторно загружаете их.
– frostschutz
20.08.2014, 21:06