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的情况。 - 构造新的文件名并重命名文件。
- 输出重命名信息或者警告信息。