faça um loop sobre o arquivo e faça o dir com a primeira coluna e e o wget usando as outras colunas

0

Eu tenho um arquivo como este com várias linhas-

GSE55555 ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE55nnn/GSE55555/suppl/* ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE55nnn/GSE55555/matrix/*
GSE11111 ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE11nnn/GSE11111/suppl/* ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE11nnn/GSE11111/matrix/*

Eu quero fazer o dir usando a primeira coluna e armazenar os arquivos baixados da segunda e terceira coluna nesse diretório.

Como posso fazer isso no unix?

    
por Sia 18.10.2017 / 23:24

1 resposta

1

Solução bash + wget do complexo:

while read -r d f1 f2; do 
    mkdir -p "$d" && cd "$d"
    wget --no-verbose -nd -np -r --level=1 "$f1"
    wget --no-verbose -nd -np -r --level=1 "$f2"
    cd $OLDPWD
done <inputfile

Detalhes :

  • read -r d f1 f2 - leia 3 campos de cada linha de inputfile nas respectivas variáveis d (nome do diretório), f1 (filepath 1) e f2 (filepath 2)

  • mkdir -p "$d" && cd "$d - criar novo diretório se não existir e alterar o diretório de trabalho atual para essa pasta

  • wget --no-verbose -nd -np -r --level=1 "$f1" - baixa todos os arquivos no primeiro nível da hierarquia ( --level=1 ) do caminho de arquivo $f1

  • cd $OLDPWD - volta ao diretório de trabalho anterior

Visualizando resultados:

$ tree GSE*
GSE11111
├── filelist.txt
├── GSE11111_RAW.tar
└── GSE11111_series_matrix.txt.gz
GSE55555
├── filelist.txt
├── GSE55555_RAW.tar
├── GSE55555_repset.17402833.enrichment.clusters.gff3.gz
└── GSE55555_series_matrix.txt.gz

0 directories, 7 files
    
por 19.10.2017 / 00:38