批量更改fasta文件名为序列ID名

shell


#!/bin/bash

# 循环遍历当前目录下所有的 .fasta 文件
for file in *.fasta
do 
    # 提取第一个序列ID(假设ID在'>'符号之后,以空格或换行结束)
    new_id=$(awk '/^>/ {print substr($1, 2); exit}' "$file")

    # 检查new_id是否为空,以防止空ID的情况
    if [ -n "$new_id" ]; then
        # 去除可能的路径分隔符
        new_id=$(echo "$new_id" | sed 's/[\/:*?"<>|]/_/g')

        # 构造新的文件名
        new_filename="${new_id}.fasta"
        
        # 重命名文件
        mv "$file" "$new_filename"
        
        echo "Renamed $file to $new_filename"
    else
        echo "Warning: $file has no valid ID. Skipping."
    fi
done


 

实现重命名目录中所有.fasta文件的功能。下面是对脚本的解释:

  • 脚本循环遍历当前目录下所有的 .fasta 文件。
  • 使用 awk 提取第一个序列ID,并去掉开头的 > 符号。
  • 检查提取的 new_id 是否为空,以防止出现空ID的情况。
  • 构造新的文件名并重命名文件。
  • 输出重命名信息或者警告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值