Linux

循環文件並使用第一列創建目錄,並使用其他列創建 wget

  • October 18, 2017

我有一個像這樣的多行文件-

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

我想使用第 1 列創建目錄,並將從第 2 列和第 3 列下載的文件儲存在該目錄中。

我怎樣才能在unix中進行呢?

複雜**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

引用自:https://unix.stackexchange.com/questions/398984