【问题标题】:Batch Renaming of Files in Linux Shell在 Linux Shell 中批量重命名文件
【发布时间】:2021-06-17 01:56:05
【问题描述】:

我在远程集群上通过 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-Statement 的组合,但我只是不要让它运行。

如果有任何帮助,我将不胜感激!

【问题讨论】:

  • edit您的问题并解释目标文件名是如何从源文件名派生的。显示您尝试过的“grep/sed/cat 的组合”并解释它们有什么问题。

标签: linux rename filenames


【解决方案1】:
i=1
for name in *
do
    newName=${name%_L001_R1_001.fastq.gz}L001_R$i.R.fq.gz
    mv "$name" "$oldname"
    ((i++))
done

【讨论】:

  • 非常感谢!我不得不将第 5 行 mv 命令中的“$oldname”更改为“$newName”,但它起作用了。
猜你喜欢
  • 2013-12-16
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2016-04-24
  • 2015-12-13
  • 2018-11-10
  • 2013-09-11
相关资源
最近更新 更多