Você pode fazer um loop de shell muito simples para fazer isso:
while read filename
do
echo '#!/bin/bash' > $filename.sh
echo "wget ftp://host.com/dir1/dir2/$filename/$filename.sra" >> $filename.sh
done < filenames.txt
Isso lê cada linha de filenames.txt
e chama filename
e, em seguida, cada uma grava um arquivo chamado $filename.sh
, em que $filename
é substituído pela linha do arquivo. Esse arquivo tem duas linhas: #!/bin/bash
, em cada arquivo e, em seguida, o comando wget
desejado, novamente com o nome do arquivo substituído em >>
, está anexando a segunda linha ao mesmo arquivo, em vez de sobrescrevê-lo. Depois de executar este script:
$ cat file1.sh
#!/bin/bash
wget ftp://host.com/dir1/dir2/file1/file1.sra
$ cat file2.sh
#!/bin/bash
wget ftp://host.com/dir1/dir2/file2/file2.sra
Você pode querer adicionar uma terceira linha dentro do corpo do loop:
chmod a+x "$filename.sh"
para tornar os scripts executáveis posteriormente. Coloque isso imediatamente acima da linha done
.
Se qualquer um dos seus nomes de arquivo tiver espaços ou outros caracteres especiais, isso irá desmoronar (em vários níveis), mas, para nomes alfanuméricos, tudo ficará bem.