我在同一目录中有多个具有单个序列的fasta文件。我想使用在fasta文件中存在的单个序列的标题来重命名每个fasta文件。当我运行代码时,我得到“替换模式未终止于(用户提供的代码)”
我的代码:
BEGIN TRANSACTION
<YOUR COMMAND>
COMMIT TRANSACTION
fasta文件:
#!/bin/bash
for i in /home/maryem/files/;
do
if [ ! -f $i ]; then
echo "skipping $i";
else
newname=`head -1 $i | sed 's/^\s*\([a-zA-Z0-9]\+\).*$/\1/'`;
[ -n "$newname" ] ;
mv -i $i $newname.fasta || echo "error at: $i";
fi;
done | rename s/ // *.fasta
我不确定是否还有另一种方法可以用标头中的ID重命名每个文件??
答案 0 :(得分:0)
鉴于ID是文件的第一个“单词”,您可以在包含fasta文件的目录中运行以下命令。
for f in *.fasta; do d="$(head -1 "$f" | awk '{print $1}').fasta"; if [ ! -f "$d" ]; then mv "$f" "$d"; else echo "File '$d' already exists! Skiped '$f'"; fi; done