批量重命名 Linux Shell 中的文件
Batch Renaming of Files in Linux Shell
我在远程集群上通过 ssh 工作,需要根据方案重命名一些文件。
重命名应该像这样:
M-19-3778_P1-DX5-K47-232-Elev_A1-A1_L001_R1_001.fastq.gz
变成
M-19-3778-P1-DX5-K47-232-Elev-A1-A1L001_R1.R.fq.gz
M-19-3778_P1-DX5-K47-232-Elev_A1-A1_L001_R2_001.fastq.gz
变成
M-19-3778-P1-DX5-K47-232-Elev-A1-A1L001_R1.F.fq.gz
M-19-3779_P1-F48-F37-86-Cont_A2-A2_L001_R1_001.fastq.gz
变成
M-19-3779-P1-F48-F37-86-Cont-A2-A2L001_R2.R.fq.gz
M-19-3779_P1-F48-F37-86-Cont_A2-A2_L001_R2_001.fastq.gz
变成
M-19-3779-P1-F48-F37-86-Cont-A2-A2L001_R2.F.fq.gz
...
M-19-3830_P1-DX5-D12-221-Elev_F9-F9_L001_R1_001.fastq.gz
变成
M-19-3830-P1-DX5-D12-221-Elev-F9-F9L001_R53.R.fq.gz
M-19-3830_P1-DX5-D12-221-Elev_F9-F9_L001_R2_001.fastq.gz
变成
M-19-3830-P1-DX5-D12-221-Elev-F9-F9L001_R53.F.fq.gz
迭代仅在名称的开头以 3778....
到目前为止,我已经尝试过 grep
/sed
/cat
的组合,但没有成功。
而且我不知道如何处理名称 R1
、R2
、...末尾的迭代,我的猜测是 for
循环和 if
-声明,但我就是不明白这个 运行。
如有任何帮助,我将不胜感激!
i=1
for name in *
do
newName=${name%_L001_R1_001.fastq.gz}L001_R$i.R.fq.gz
mv "$name" "$oldname"
((i++))
done
我在远程集群上通过 ssh 工作,需要根据方案重命名一些文件。 重命名应该像这样:
M-19-3778_P1-DX5-K47-232-Elev_A1-A1_L001_R1_001.fastq.gz
变成
M-19-3778-P1-DX5-K47-232-Elev-A1-A1L001_R1.R.fq.gz
M-19-3778_P1-DX5-K47-232-Elev_A1-A1_L001_R2_001.fastq.gz
变成
M-19-3778-P1-DX5-K47-232-Elev-A1-A1L001_R1.F.fq.gz
M-19-3779_P1-F48-F37-86-Cont_A2-A2_L001_R1_001.fastq.gz
变成
M-19-3779-P1-F48-F37-86-Cont-A2-A2L001_R2.R.fq.gz
M-19-3779_P1-F48-F37-86-Cont_A2-A2_L001_R2_001.fastq.gz
变成
M-19-3779-P1-F48-F37-86-Cont-A2-A2L001_R2.F.fq.gz
...
M-19-3830_P1-DX5-D12-221-Elev_F9-F9_L001_R1_001.fastq.gz
变成
M-19-3830-P1-DX5-D12-221-Elev-F9-F9L001_R53.R.fq.gz
M-19-3830_P1-DX5-D12-221-Elev_F9-F9_L001_R2_001.fastq.gz
变成
M-19-3830-P1-DX5-D12-221-Elev-F9-F9L001_R53.F.fq.gz
迭代仅在名称的开头以 3778....
到目前为止,我已经尝试过 grep
/sed
/cat
的组合,但没有成功。
而且我不知道如何处理名称 R1
、R2
、...末尾的迭代,我的猜测是 for
循环和 if
-声明,但我就是不明白这个 运行。
如有任何帮助,我将不胜感激!
i=1
for name in *
do
newName=${name%_L001_R1_001.fastq.gz}L001_R$i.R.fq.gz
mv "$name" "$oldname"
((i++))
done