【问题标题】:How to rename multiple file extensions at the same time?如何同时重命名多个文件扩展名?
【发布时间】:2020-09-10 14:46:49
【问题描述】:

我已经提到了这个postpost

我的文件名如下所示(1 组包含 3 个相关文件)。在我的目录中,我有 40 组文件(即 120 个文件)。所有 40 个集合都有 3 个文件扩展名相同的文件

设置 1

Test_t5.version9.info.gz
Test_t5.version9.dose.vcf.gz.tbi
Test_t5.version9.dose.vcf.gz

第二组

Test_t5.version12.info.gz
Test_t5.version12.dose.vcf.gz.tbi
Test_t5.version12.dose.vcf.gz

只有文件中的版本号会在不同的集合中发生变化。

现在,我想重命名我的文件,如下所示

设置 1

Test_t5.version9.info.gz
Test_t5.version9.dose.vcf.gz.tbi
Test_t5.version9.dose.vcf.bgz            #see the change here from `.gz to .bgz`

第二组

Test_t5.version12.info.gz
Test_t5.version12.dose.vcf.gz.tbi
Test_t5.version12.dose.vcf.bgz            #see the change here from `.gz to .bgz`

我尝试了以下方法,但猜测在 shell 中执行命令时出错了。

 rename 's/dose.vcf.gz/dose.vcf.bgz/' Test_t5.version*.dose.vcf.gz

基本上只修改每个集合中的一个文件的文件扩展名。您不必担心Set 1Set 2。那是为了让您了解我们的数据是如何分组的。

你能帮忙吗?

【问题讨论】:

  • 该命令对我来说看起来不错。它会产生任何输出或错误消息,还是默默地什么都不做?
  • 我的命令没有输出

标签: linux shell unix command-line file-rename


【解决方案1】:

看起来你只是想做:

for file in *.vcf.gz; do mv "$file" "${file%.gz}.bgz"; done

【讨论】:

  • @Thomas 您可以通过稍微更改命令来测试它将接触哪些文件:for file in *.vcf.gz; do echo "$file"; done。它不应触及任何.info.gz 文件。
  • 它不会接触带有vcf.gz.tbi 扩展名的文件。我说的对吗?
  • 我只喜欢将扩展名为vcf.gz的文件重命名为vcf.bgz
  • 顺便说一句,赞成帮助。一旦我尝试,将很快接受答案。目前不在我的办公桌前。但可以帮助我解决我在 cmets 中的问题
  • 正确,*.vcf.gz glob 将不匹配以 vcf.gz.tbi 结尾的名称
猜你喜欢
  • 2014-11-28
  • 2016-05-06
  • 2016-12-21
  • 2012-11-13
  • 1970-01-01
  • 2014-05-29
  • 2010-11-16
  • 2015-06-18
  • 2023-03-29
相关资源
最近更新 更多