Если vi
Вы имеете в виду оригинал vi
, тот был скорее поврежден, имел тонны "недокументированных команд" (я все еще нежно помню длинный документ, дающий недокументированное и промежуточное (или больше) поврежденный, особенный, полностью неправильный, и иногда спасительный, команды). Дополнительный язык (языки) для vim
много мощного Мура. Только посмотрите на значение имени: *V*i *Im*proved, vim
сам undestands как перенос vi
отметьте к будущему. Если Вы не входите в укромные уголки и трещины, оба должны работать то же, с vim
имение преимущество продолжающейся разработки.
Думаю, эти переключатели сделают то, что вы хотите с помощью wget
:
-A acclist --accept acclist
-R rejlist --reject rejlist
Specify comma-separated lists of file name suffixes or patterns to
accept or reject. Note that if any of the wildcard characters, *, ?,
[ or ], appear in an element of acclist or rejlist, it will be
treated as a pattern, rather than a suffix.
--accept-regex urlregex
--reject-regex urlregex
Specify a regular expression to accept or reject the complete URL.
$ wget -r --no-parent -A 'bar.*.tar.gz' http://url/dir/
Есть веская причина, по которой это не может работать напрямую с HTTP, и она заключается в том, что URL не является путем к файлу, хотя использование /
в качестве разделителя может сделать его похожим на таковой, и они иногда соответствуют. 1
Традиционно (или исторически) веб-серверы часто делают зеркальную иерархию каталогов (для некоторых - например, Apache - это является неотъемлемой частью) и даже обеспечивают индексы каталогов, как в файловой системе. Однако протокол HTTP не требует этого.
Это важно, потому что если вы хотите применить glob, скажем, ко всему, что является подпунктом http://foo/bar/
, если сервер не предоставит вам какой-либо механизм для обеспечения этого (например, вышеупомянутый индекс), вам не к чему будет применить glob to. Там нет файловой системы для поиска. Например, если вы знаете, что есть страницы http://foo/bar/one.html
и http://foo/bar/two.html
, это не значит, что вы можете получить список файлов и подкаталогов через http://foo/bar/
. В рамках протокола сервер может вернуть 404 для этого. Или он может вернуть список файлов. Или он может послать вам красивую картинку в формате jpg. И т.д.
Так что здесь нет никакого стандарта, который wget
мог бы использовать. AFAICT, wget работает над зеркальным отображением иерархии путей путем активного изучения ссылок на каждой странице. Другими словами, если вы рекурсивно отражаете http://foo/bar/index.html
, он загружает index.html
, а затем извлекает ссылки, которые являются его подпутями. 2 Переключатель -A
- это просто фильтр, который применяется в этом процессе.
Короче говоря, если вы знаете, что эти файлы где-то проиндексированы, вы можете начать с этого, используя -A
. Если нет, то вам не повезло.
1. Конечно, FTP URL - это тоже URL. Однако, хотя я не очень много знаю о протоколе FTP, я бы предположил, основываясь на его природе, что он может иметь форму, позволяющую прозрачное глоббирование.
2. Это означает, что может существовать правильный URL http://foo/bar/alt/whatever/stuff/
, который не будет включен, потому что он никоим образом не связан ни с чем из набора вещей, связанных с http://foo/bar/index.html
. В отличие от файловых систем, веб-серверы не обязаны делать расположение своего содержимого прозрачным, равно как и не обязаны делать это интуитивно очевидным способом.
Es posible que la solución ' -Un patrón' anterior no funcione con algunas páginas web. Este es mi trabajo -alrededor, con un wget doble:
wget
la página grep
para patrón wget
el archivo (s)Ejemplo :supongamos que es una página de podcast de noticias y quiero 5 archivos mp3 de la parte superior de la página:
wget -nv -O- https://example/page/ |
grep -o '[^"[:space:]]*://[^"[:space:]]*pattern[^"[:space:]]*\.mp3' |
head -n5 | while read x; do
sleep $(($RANDOM % 5 + 5)) ## to appear gentle and polite
wget -nv "$x"
done
El grep
está buscando enlaces de espacio doble -citado sin -que contengan ://
y mi nombre de archivo pattern
.
Используйте опцию -nd для сохранения всех файлов в текущем каталоге без иерархии каталогов, например:
wget -r -nd --no-parent -A 'bar.*.tar.gz' http://url/dir/