我正在尝试下载一堆文件,并在我进行重命名。下载部分工作正常,但我无法让它重命名文件。这是我正在使用的脚本:
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
这将正确下载文件SRR546696、SRR546697等,但不会对它们进行重命名。
我还试着使用:
rename 's/SRR/"$COUNTER"mVD_SRR/' *.fastq
但这也没什么用。
发布于 2019-02-12 01:58:07
你需要双引号,以防止单词分裂和全球化。同时,您需要在{}
中保留变量名。
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
与在许多地方硬编码"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
改进:
((counter++)
和((...))
是更好的语法而不是$[ ... ]
您可能需要将错误检查添加到代码中。
相关
发布于 2019-02-12 01:50:15
当将变量名称与字符串组合时,只应引用字符串:
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
https://stackoverflow.com/questions/54641654
复制相似问题