ファイル名をまとめて変更し、日付スタンプをDD-MM-YYYYからYYYY-MM-DDに変換するには?

ファイル名をまとめて変更し、日付スタンプをDD-MM-YYYYからYYYY-MM-DDに変換するには?

次の日付スタンプを含むファイルを含むフォルダの名前を変更しようとします。

string_DD-MM-YYYY_hhmm.pdf

この形式で:

string_YYYY-MM-DD_hhmm.pdf

ファイル名でソートすると、日付でソートされます。

例:PB_KAZ_KtoNr_0463266665_01-02-2014_0341.pdfにする必要がありますPB_KAZ_KtoNr_0463266665_2014-02-01_0341.pdf

私はこれを見つけましたエマルジョンしかし、DD-MM-YYYYではなくDDMMYYYY形式に関するもので、私の場合は答えが複雑すぎます。string内容と長さ(24文字)は常に同じなので、場所ごとに文字列を分割して再組み立てする簡単なコマンドで十分です。

よろしくお願いします!

答え1

Perlを使用して名前を変更する(スタンドアロンコマンド):

rename -n 's/(.*)_(.*)-(.*)-(.*)_(.*.pdf)/$1_$4-$3-$2_$5/' *.pdf

問題がなければ削除してください-n

答え2

これは特にファイルが多い場合のおおよそのアプローチですが、最も基本的なawkアプローチは次のとおりです。

フォルダにstring_DD-MM-YYYY_hhmm.pdf以外のPDFがなく、string_部分の長さが24文字であるとします。

cdフォルダに移動して、次を実行します。

for i in *.pdf; do mv $i `\ls -1 $i | awk '{print substr ($0, 0, 24)}'``\ls -1 $i | awk -F[_.] '{print$(NF-1)}'| awk -F- '{print$3"-"$2"-"$1}'`.pdf; done

関連情報