web-dev-qa-db-ja.com

正規表現を使用してMacOSターミナルでファイルの名前を変更する

MacOS 10.9 Mavericksで正規表現を使用して、ターミナルコマンドで数百の画像の名前を変更する必要があります。

ファイルの名前は次のようになります。

0045AW489R3T(IPCAM)_0_20131124101245_931.jpg
0021DF025C8E(IPCAM)_0_20131127101721_44591.jpg
389223GT4Z6W(IPCAM)_0_20131128103423_7893282.jpg

名前を次のように変更する必要があります。

2013-11-24  10-12-45.jpg
2013-11-27  10-17-21.jpg
2013-11-28  10-34-23.jpg

誰かがそれを行う方法を教えてもらえますか?

5
orangebreeze

あなたが試すことができます

for a in *.jpg ; do mv -- "$a" "${a:22:4}-${a:26:2}-${a:28:2} ${a:30:2}-${a:32:2}-${a:34:2}.jpg" ; done

少し醜いですが、それは仕事を成し遂げるはずです。いつものように、必ず前にコピーでテストしてください。

5
damienfrancois

ファイル名の最初の部分の長さが常に同じであるとは限らない場合は、 awk を使用して2番目の_の後の文字列を抽出し、最初の8桁を使用してファイル名を作成できます。

#!/usr/bin/env bash

for file in folder/*; do
    outName=$(awk -F"_" '{ print substr($3,1,4)"-"substr($3,5,2)"-"substr($3,7,2) }' <<< "${file}").jpg
    mv "${file}" "${outName}"
done
0
pfnuesel