0

我想重命名从以下脚本下载的文件:

exec < input_list.txt
while read line
do
get $line
wget ftp://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/$2/$4
# Rename $4
mv $4 $1"_"$3".bam"
done

输入文件 (input_list.txt) 以制表符分隔并包含四列。第一个,$1= 名称,$2= wget 地址,$3= 因子,$4 是文件名。

A549    wgEncodeBroadHistone    H2azDex100nm    wgEncodeBroadHistoneA549H2azDex100nmAlnRep1.bam

我想将 $4(已下载的文件)重命名为仅包含相应的 $1 和 $3 术语的较短文件名。例如,wgEncodeBroadHistoneA549H2azDex100nmAlnRep1.bam 变成A549_H2azDex100nm.bam

我玩过,"但我不断收到 mv 命令的错误消息,这$4是一个错误的变量名。任何建议将不胜感激。

4

1 回答 1

4

如果使用 wget 的 -O 选项,则不需要重命名文件:

#!/bin/bash

[ -n "$BASH_VERSION" ] || {
    echo "You need Bash to run this script."
    exit 1
}

while IFS=$'\t' read -a INPUT; do
    wget -O "${INPUT[0]}_${INPUT[2]}.bam" "ftp://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/${INPUT[1]}/${INPUT[3]}"
done < input_list.txt

确保将文件保存为 UNIX 文件格式,例如script.sh并运行bash script.sh.

于 2013-08-13T14:48:05.513 回答