特定の形式で一部のファイル名を変更する

特定の形式で一部のファイル名を変更する

いくつかのファイルの名前を変更したいと思います。次の形式のファイルがたくさんあります?????.pdb

ファイル名は5桁(数字と文字)で構成され、新しい名前は次のとおりです????_biounit?.pdb。前の名前の最初の4文字は保持し、5番目の文字は「biounits」という単語の後に挿入する必要があります。

いくつかの例:

  • ソースファイル:

    1b471.pdb 1caz4.pdb 1ca93.pdb
    
  • 新しいファイル:

    1b47_biounit1.pdb 1caz_biounit4.pdb 1ca9_biounit3.pdb
    

これを行うためにcomand mvを試しましたが、最初の4文字と5番目の文字を区別することはできません。誰でも私を助けることができますか?

答え1

シェルループを使用してください:

for f in ?????.pdb; do mv "$f" "${f%?.pdb}_biounit${f#????}"; done
  • ${f%?.pdb}?.pdbファイル名の末尾から削除されます。
  • ${f#????}????ファイル名の先頭から削除します。

答え2

Perlの名前変更ツールを使用してください。

rename -n 's/(....)(.)/$1_biounit$2/' ?????.pdb

-n出力が満足な場合は削除してください。

関連情報