【问题标题】:Renaming files in Shell Script Linux在 Shell Script Linux 中重命名文件
【发布时间】:2013-08-13 14:38:19
【问题描述】:

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

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 是一个错误的变量名。任何建议将不胜感激。

【问题讨论】:

  • 我认为查看“input_list.txt”中的实际字段会有所帮助。变量 $4 可能实际上与从 wget 下载的文件的名称不对应。

标签: linux bash shell mv


【解决方案1】:

如果使用 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

确保以script.sh 等UNIX 文件格式保存文件并运行bash script.sh

【讨论】:

    猜你喜欢
    • 2021-06-17
    • 1970-01-01
    • 2013-04-03
    • 2015-04-17
    • 2014-09-28
    • 2018-06-09
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    相关资源
    最近更新 更多