我正在尝试下载一堆文件,并在我去的时候重命名它们.下载部分工作正常,但我不能让它重命名文件.这是我正在使用的脚本:
COUNTER=0
for (( i = 696; i <= 773; i++ ))
do
fastq-dump --split-3 --accession SRR546$i
mv SRR546"$i"_1 ./"$COUNTER"mVD_SRR546$i_1
mv SRR546"$i"_2 ./"$COUNTER"mVD_SRR546$i_2
gzip *.fastq
COUNTER=$[COUNTER + 1]
done
Run Code Online (Sandbox Code Playgroud)
这将正确下载文件SRR546696,SRR546697等,但不会重命名它们.
我也试过用:
rename 's/SRR/"$COUNTER"mVD_SRR/' *.fastq
Run Code Online (Sandbox Code Playgroud)
但这也没有做任何事.
您需要双引号参数以防止单词拆分和通配.同时,您需要使用以下内容保留变量名称{}:
counter=0
for ((i = 696; i <= 773; i++)); do
fastq-dump --split-3 --accession "SRR546$i"
mv "SRR546${i}_1" "./${counter}mVD_SRR546${i}_1"
mv "SRR546${i}_2" "./${counter}mVD_SRR546${i}_2"
gzip *.fastq
((counter++))
done
Run Code Online (Sandbox Code Playgroud)
您可以使用变量来保存该字符串并使您的代码更具可读性,而不是在很多地方对"SRR546"进行硬编码:
counter=0 srr="SRR546"
for ((i = 696; i <= 773; i++)); do
fastq-dump --split-3 --accession "$srr$i"
mv "$srr${i}_1" "./${counter}mVD_${srr}${i}_1"
mv "$srr${i}_2" "./${counter}mVD_${srr}${i}_2"
gzip *.fastq
((counter++))
done
Run Code Online (Sandbox Code Playgroud)
改进:
((counter++)和((...))是一个更好的语法比$[ ... ]您可能希望在代码中添加错误检查.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |