ファイル名の末尾にあるタイムスタンプを削除するために、単一のディレクトリにある複数のファイルの名前をどのように変更できますか?

ファイル名の末尾にあるタイムスタンプを削除するために、単一のディレクトリにある複数のファイルの名前をどのように変更できますか?

ファイル名からタイムスタンプを削除するために、Linuxで次のファイルの名前を変更するにはどうすればよいですか?

AB_CD_EFGHIKL_20191221_D_1.dat.20191221102446_processed
AB_CD_EFGHIKLMN_20191221_D_1.dat.20191221102428_processed

ファイル名を次のように変更したいと思います。

AB_CD_EFGHIKL_20191221_D_1.dat
AB_CD_EFGHIKLMN_20191221_D_1.dat

答え1

perl-renamerenameDebian、Ubuntu、その他多くのシステムで呼び出されます)場合は、次のことができます。

rename -n 's/dat\.\d+_processed/dat/' *.dat*

これ-nにより、実際に名前を変更せずに変更のみを印刷できます。うまくいけば-n


または、シェルで次のことを実行できます。

for f in *.dat*; do echo mv -- "$f" "${f%.dat*}.dat"; done

もう一度、これがあなたのニーズに合っている場合は、削除してechoもう一度実行してください。

関連情報