Unix - ディレクトリのファイル名を同じディレクトリにあるファイルの特定の一意の接頭辞に変更します。

Unix - ディレクトリのファイル名を同じディレクトリにあるファイルの特定の一意の接頭辞に変更します。

私のディレクトリには、次の同じサフィックスと一意の英数字プレフィックスを持つ数百のファイルがあります。

ABC01234.sorted_dup.bam

ABC04271.sorted_dup.bam

ABC09287.sorted_dup.bam

次のように、各元のプレフィックスに固有の新しい一意の英数字プレフィックスを含む列を持つファイルがあります。

GBH03987 ABC01234

GBH05430 ABC04271

GBH07651 ABC09287

元のプレフィックスをファイルの正しいプレフィックスに置き換えたいと思います。つまり、ディレクトリ内のファイル名のプレフィックスを列1のプレフィックスに置き換えます。生成されたファイル名には、次のように列1に基づく接頭辞が付きます。

GBH03987.sorted_dup.bam

GBH05430.sorted_dup.bam

GBH07651.sorted_dup.bam

UNIXに初めてアクセスする人にとって最も簡単なソリューションは何ですか? awkまたはsedソリューションが一番良いでしょう、大変感謝します。

答え1

この場合、単純なシェルループで十分です。

while read -r new old; do 
  [ -f "$old.sorted_dup.bam" ] && echo mv -- "$old.sorted_dup.bam" "$new.sorted_dup.bam"
done < filenames

filenamesマッピングを含むファイルの名前はどこにありますか?テスト後に削除してくださいecho

関連情報