Как загрузить определенные папки с URL

когда я использую эту команду:

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 
.
. 
.

Заранее спасибо

0
задан 1 November 2019 в 18:47

3 ответа

Можно использовать -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 будет считанным из файла.

0
ответ дан 22 December 2019 в 00:08

Читать 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.
0
ответ дан 22 December 2019 в 00:08

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
0
ответ дан 22 December 2019 в 00:08

Другие вопросы по тегам:

Похожие вопросы: