我想重命名从以下脚本下载的文件:
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
是一个错误的变量名。任何建议将不胜感激。
最佳答案
如果使用 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
。
关于linux - 在 Shell Script Linux 中重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212070/