gpt4 book ai didi

linux - 如何重命名 bash 中的文件以增加名称中的数量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:20 24 4
gpt4 key购买 nike

我有几千个文件,命名如下:

Cyprinus_carpio_600_nanopore_trim_reads.fasta                
Cyprinus_carpio_700_nanopore_trim_reads.fasta
Cyprinus_carpio_800_nanopore_trim_reads.fasta
Cyprinus_carpio_900_nanopore_trim_reads.fasta
Vibrio_cholerae_3900_nanopore_trim_reads.fasta

对于前两个词的 80 个变体(80 个不同的物种),我想重命名所有这些文件,使数字增加 100 - 例如:

Vibrio_cholerae_3900_nanopore_trim_reads.fasta 

会变成

Vibrio_cholerae_4000_nanopore_trim_reads.fasta

Cyprinus_carpio_300_nanopore_trim_reads.fasta

会变成

Cyprinus_carpio_400_nanopore_trim_reads.fasta

不幸的是,我不知道如何重命名它们,我很幸运地遵循了 https://unix.stackexchange.com/questions/40523/rename-files-by-incrementing-a-number-within-the-filename 上的解决方案。

但我无法让它在名称内部工作,如果有帮助的话,我正在 Ubuntu 18.04 上运行

最佳答案

如果你能得到 rename 的 Perl 风格版本,就像这样很简单:

rename -n 's/(\d+)/$1 + 100/e' *fasta

示例输出

'Ciprianus_maximus_11_fred.fasta' would be renamed to 'Ciprianus_maximus_111_fred.fasta'
'Ciprianus_maximus_300_fred.fasta' would be renamed to 'Ciprianus_maximus_400_fred.fasta'
'Ciprianus_maximus_3900_fred.fasta' would be renamed to 'Ciprianus_maximus_4000_fred.fasta'

如果你看不懂 Perl,那就是说......“按如下方式进行单个替换。无论你在哪里看到一串数字彼此相邻(\d+),记住它们(因为我将其放在括号中),然后将它们替换为那串数字 ($1) 加 100 的计算表达式。”

如果试运行看起来正确,请删除 -n。唯一“棘手的部分”是在替换结束时使用e,这意味着评估替换中的表达式 - 或者我调用它是一个“计算的替换”

关于linux - 如何重命名 bash 中的文件以增加名称中的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52640820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com