ファイル名に現在の日付を追加して複数のファイルを移動/名前変更する方法

ファイル名に現在の日付を追加して複数のファイルを移動/名前変更する方法

複数のファイルをmv /名前に変更し、その名前に現在の日付を追加できるようにRed Hatのbashスクリプトを変更する必要があります。たとえば、次のような大容量ファイルがあります。

BSS4C.SASS.CCAC.I101010.P211008

BSS4C.SASS.CSVC.I102210.P211008

(次から始まる28個のファイルがあります。PBSS4C。*と*で終わる.P211008)

このファイルに211008 は処理日を示します。処理日をファイル名の現在の日付に置き換えて置き換える必要があります。そして時間ファイル名の先頭に。

予想される結果:

時間BSS4C.SASS.CCAC.I101010.P211011

時間BSS4C.SASS.CSVC.I102210.P211011

よろしくお願いします。

答え1

アクセス権がある場合perl-rename(通常はrenameDebianベースのシステムで呼び出されます)、次のことができます。

rename -n "s/^P/T/; s/\.P211008$/\.P$(date +'%y%m%d')/" PBSS4C.*P211008

これにより、実際に名前を変更せずに実行する変更のみが印刷さ-nれます。rename目的の結果が得られると確信している場合は、それを除いてそのままにしてください-n

ない場合は、perl-rename次のことができます。

date=$(date +'%y%m%d')
for i in PBSS4C.*P211008; do 
    newName=${i/P/T} 
    newName=${newName/.P211008/}
    echo mv -- "$i" "$newName."P"$date"; 
done

ここで実行し、必要に応じて動作することを確認したら、echo実際にファイル名を変更せずに再実行してください。

関連情報