파일을 반복하고 첫 번째 열로 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/*

첫 번째 열을 사용하여 디렉터리를 만들고 해당 디렉터리의 두 번째 및 세 번째 열에서 다운로드한 파일을 저장하고 싶습니다.

유닉스에서는 어떻게 하나요?

답변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

관련 정보