Как загрузить много документов на терминал с сервера?

Мне нужно написать скрипт bash (.sh) с менее чем 300 символами, который загружает все геномы 22 на этом сервере ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/ (те, у которых расширение fa.gz ) и извлекает их. Моим первым было просто написать wget ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_01/hs_alt_CHM1_1.1_chr1.fa.gz | gunzip wget ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_01/hs_alt_CHM1_1.1_chr1.fa.gz | gunzip но я не могу этого сделать для 22 файлов. Я понял, что все файлы имеют одно и то же имя, кроме номера рядом с CHM и chr. Например, десятый геном – ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_10/hs_alt_CHM1_1.1_chr10.fa.gz. Наверное, мне нужно сделать какой-то код рекурсии, но я не очень разбираюсь в bash поэтому любая помощь очень ценится. Спасибо!

One Solution collect form web for “Как загрузить много документов на терминал с сервера?”

Простой цикл должен быть достаточно:

 for i in {1..22} do wget "ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_${i}/hs_alt_CHM1_1.1_chr${i}.fa.gz" gunzip "hs_alt_CHM1_1.1_chr${i}.fa.gz" done 

Индекс цикла не должен быть просто числом, вы можете получить файлы MT , Un , X и Y а также:

 for i in {1..22} MT Un XY 

Поскольку первый набор чисел должен быть нулевым, вы можете использовать printf для этого:

Или:

 firsti="$(printf "%02d" $i)" wget "ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_${firsti}/hs_alt_CHM1_1.1_chr${i}.fa.gz" 

Вы можете запустить тест для этого цикла, но проще просто переместить символы ( MT Un XY ) в отдельный цикл, используя оригинальный wget .

  • Wget загружать файл (не перезаписывать) сценарий автоматического обновления
  • Как передать аргумент, хранящийся в переменной, в WGET
  • Построение URL-адресов со списком слов и загрузка из URL-адресов с помощью командной строки
  • У curl есть опция -no-check-certificate, например wget?
  • wget, чтобы получить все файлы в каталоге, возвращает index.html
  • Записать wget link-rewrite обо всех загруженных файлах
  • Сохраните команду ../../../ в команде wget
  • wget --spider: как определить, где неработающие ссылки происходят из
  • Что означает 2> & 1 в этой команде?
  • wget и cURL - явный адрес IPv6
  • wget на лету, чтобы извлечь определенную информацию из файла, не загружая весь файл
  • Linux и Unix - лучшая ОС в мире.