特定のファイルを削除

特定のファイルを削除

このディレクトリには、/home/Scrivania/pdb_files同じファイル名形式のXXX_?.pdb

例えば、

A4R_A.pdb 
A4R_B.pdb
A4R_C.pdb
TY6_A.pdb
001_A.pdb
001_B.pdb
ATE_B.pdb

これらのファイルのいくつかを保持し、他のファイルを削除するだけです。特に、名前の最初の3文字が同じファイルが複数ある場合は、最後の文字 ""に関係なく1つだけを保持したいと思います?

したがって、最終的に私のディレクトリには次のファイルのみが必要です。

A4R_A.pdb 
TY6_A.pdb
001_A.pdb
ATE_B.pdb

次のエントリを削除してください:A4R_B.pdb、、、A4R_C.pdb001_B.pdb

A最初の3つの同じ文字を持つファイル(、Bまたは)を保持することは重要ではありませんC。また、?文字が文字以外の数字であるか、A、B、Cとは異なる文字である可能性があります。

したがって、選択は最初の3文字のみに基づいて行う必要があります。たとえば、最初の3文字が同じより多くのファイルの場合、1つの戦略は、最初の接点ファイルのみを維持することです。

誰でもこれを行うことができるbashスクリプトを提案できますか?

ベストアンサー1

この試み、

for dup in $(ls  *.pdb | awk 'BEGIN{FS="_"}{if (++dup[$1] >= 2) print}')
do
   rm -f $dup; 
done
  • FS="_"下線をフィールド区切り記号として保持します。
  • (++dup[$1] >= 2)カウンタが2以上の場合は、ファイル名全体が印刷され、その入力のみがループに渡され、forファイルが削除されます。

おすすめ記事