когда я использую эту команду:
wget -r -np -nH --cut-dirs=6 -R "index.html*" -e robots=off "https://physionet.org/physiobank/database/challenge/2018/training/"
Это загрузит все папки (994 папки) внутри training
папка. Если существует способ отредактировать команду для загрузки просто определенных папок, например, первые 50 папок.
Папки находятся в этом порядке, и в каждом из них существует четыре файла:
tr03-0005
tr03-0029
tr03-0052
tr03-0061
tr03-0078
tr03-0079
tr03-0083
tr03-0086
tr03-0087
tr03-0092
.
.
.
Заранее спасибо
Можно использовать -i
флаг, который прочитает список URL, которые Вы хотите загрузить из файла. Таким образом, если у Вас есть file.txt с этим содержанием:
https://physionet.org/physiobank/database/challenge/2018/training/tr03-0005
https://physionet.org/physiobank/database/challenge/2018/training/tr03-0029
и используйте wget other_options -i file.txt
затем Вы загрузите просто те два, первые две папки. Отметьте это с -i
Вы не должны передавать URL, так как каждый URL будет считанным из файла.
Читать man wget
, и Вы найдете
-X list
--exclude-directories=list
Specify a comma-separated list of directories you wish to exclude from download.
Elements of list may contain wildcards.
Wget не имеет ничего для составления ограничения этим способом (что я мог помнить или найти).
Но для этого конкретного случая можно использовать оболочку, чтобы наивно проанализировать подкаталоги до предела и захватить их индивидуально:
# Where `n` is the limit we want
n=50; c=0; for f in $(curl https://physionet.org/physiobank/database/challenge/2018/training/ | grep '^<a href="tr' | sed 's/.*"\(.*\)".*/\1/'); do if [ $c -ge $n ]; then break; fi; wget -r -np -nH --cut-dirs=5 -R "index.html*,.mat" -e robots=off "https://physionet.org/physiobank/database/challenge/2018/training/${f}"; c=$(($c + 1)) ; done