次の日付スタンプを含むファイルを含むフォルダの名前を変更しようとします。
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