私はファイルのリストの名前を変更しようとしてきましたが、それは非常に困難でした... 41のファイル名は次のとおりです。
BEIII_S29_pear_derep.fasta
BEII_S15_pear_derep.fasta
BEI_S1_pear_derep.fasta
MB211III_S30_pear_derep.fasta
MB211II_S16_pear_derep.fasta
MB211I_S2_pear_derep.fasta
...
名前を変更する必要があります:
BEIII.fas
BEII.fas
BEI.fas
MB211III.fas
MB211II.fas
MB211I.fas
forループを使用してみました:
for i in *_S[0-9]{1,2}_pear_derep.fasta; do newfile="$(basename $i _S[0-9]{1,2}_pear_derep.fasta)"; echo $newfile; cp ${newfile}_S[0-9]{1,2}_pear_derep.fasta ${newfile}.fas; done;
それはうまくいきませんでした
rename 's/([A-Z]*[0-9]*[I]{1,4})_[A-Z][0-9]_[a-z]_[a-z]{1,5}(\.fasta).*/$1$2/g' *
それはうまくいきませんでした
for file in *.fas; do newfile=$(echo "$file" | sed -re 's/S_[0-9][0-9](\.)/\./g') mv -v $file $newfile; done;
それらのどれも機能しませんでした。ここで重要なのは、正規表現を使用して変数の開始を維持する必要があるということです。
[A-Z]{2}[0-9]{3}[I]{1,3}
その後、他のすべてが除外されます
S[0-9]{1,2}_[a-z]{4}_[a-z]{5} and then the extension .fasta to .fas
誰かが私を助けてくれませんか?君たちありがとう
*\.fasta
必要なすべてのファイルをターゲットにしていることを確認する必要があります。mv
コマンドをエコーするか、ディレクトリのコピーを作成して、最初にそこで試してください。
for i in *\.fasta; do
mv $i ${i/_*/}.fas;
done
置換${i/_*/}
により、最初の_
。以降のすべてが削除されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加