循环文件并使用第一列创建 dir 并使用其他列创建 wget

循环文件并使用第一列创建 dir 并使用其他列创建 wget

我有一个像这样的多行文件-

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/*

我想使用第一列创建目录,并将第二列和第三列下载的文件存储在该目录中。

我该如何在unix下进行呢?

答案1

复杂的bash+wget解决方案:

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

细节

  • read -r d f1 f2- 从每行读取 3 个字段到inputfile各自的变量d(目录名称)、f1(文件路径 1)和f2(文件路径 2)中

  • mkdir -p "$d" && cd "$d- 创建新目录(如果不存在)并将当前工作目录更改为该文件夹

  • wget --no-verbose -nd -np -r --level=1 "$f1"--level=1-从文件路径下载层次结构第一层 ( ) 上的所有文件$f1

  • cd $OLDPWD- 返回上一个工作目录


查看结果:

$ 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

相关内容