Если все ссылки такие же правильные, как и выглядят, вы можете попробовать это:
results=147
for ((i=0; i<147; i++)); do
base=ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/
ext=$((445410+i))
suff=.fastq.gz
for j in 1 2; do wget "${base}${ext}/${ext}/_${j}${suff}"; done
done
Насколько я вижу, в этой загрузке нет ничего рекурсивного. Проверка адреса ссылки дает некоторую подсказку:
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445410/ERR445410_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445410/ERR445410_2.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445411/ERR445411_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445411/ERR445411_2.fastq.gz
Таким образом, должно быть только три части, которые меняются между ними:
ERR<nr>/ERR<nr>_<1 or 2>
Шаг для ERR
равен 1, а количество результатов равно 147, что дает полный ответ, если предположить, что это все в этой истории. Поэтому после того, как вы закончите загрузку, подсчитайте новые файлы и убедитесь, что у вас их 2 *147.
Процедура загрузки, безусловно, может быть оптимизирована. Как и выше, для каждой ссылки запускается один процесс wget
. Я оставлю оптимизацию на ваше усмотрение, представляя здесь только анализ и базовое решение.
USB — это не «просто последовательный порт» ни в каком смысле, который соответствовал бы старому стандарту последовательного порта RS -232 (, также известному как EIA/TIA -232 ). Вы не можете превратить USB в RS -232, «отключив дополнительные требования».
В отличие от классических последовательных портов RS -232, USB использует дифференциальную сигнализацию :на самом деле немного (очень мало )как RS -485, хотя уровни сигнала и другие электрические характеристики сильно отличаются.
RS -232 может использовать напряжение сигнала до +/ -15 вольт :USB использует <0,3 В для низкого логического уровня и 2,8 -3,6 вольта для высокого логического уровня в режимах USB 1; в высокоскоростном режиме USB 2 -напряжения еще меньше.
Даже если логические уровни TTL (0..5V )используются в RS -232, передатчик USB не сможет генерировать RS -232 "пробел" (= выше -состояние напряжения )сигнализирует надежно. Уровни сигналов просто не совпадают между этими стандартами :сигнал передатчика USB будет слишком слабым для приемника RS -232 UART, а выходной сигнал RS -232 перегрузит приемник USB.
С простой схемой преобразователя уровней не обойти несовместимость, либо :вместо отправки всего одного стартового бита, затем одного байта данных, а затем одного-двух стоповых битов, USB-трансивер имеет дело с пакетами. В начале пакета должна быть последовательность синхронизации (8 бит для USB 1; 32 бита для высокоскоростной -передачи USB 2 ), затем передаются несколько байтов и, наконец, сигнал конца -из -пакета, который не будет соответствовать ни нормальному «логическому низкому», ни «логическому высокому» " состояния. Все это может быть реализовано аппаратно для повышения эффективности, и, поскольку обычно нет причин делать что-то другое, вероятно, нет никаких условий для обхода этого для «битового -удара» фактических линий данных при прямом программном управлении.
Сравните примеры сигналов RS -232 и USB 1.1 в Википедии.
Подводя итог :нет, проблема в том, что различия между USB и RS -232 слишком велики на фактическом аппаратном уровне.