我有一个像这样的多行文件-
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