読者です 読者をやめる 読者になる 読者になる

min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

bash ファイル名の年月日と時刻の間にアンダーバーを挿入する(正規表現・awk)

bash Linux awk

ハイビジョン録画ファイルの命名規則を途中で変えてしまった。

ーーー

① ファイル名の年月日時刻の間にアンダーバーある

$ ls | grep -e '^NHK_........_.*' | tail -n 3

NHK_20170304_070001.ts.mp4

f:id:min117:20170306114239p:plain

ーーーー

② ファイル名の年月日時刻の間にアンダーバーない

$ ls | grep -e '^NHK_........[0-9].*' | tail -n 3

NHK_20170113070002.ts.mp4

f:id:min117:20170306114232p:plain

ーーー

①で統一したい。まずは for文でキャプチャしてみる。

$ for i in `ls | grep -e '^NHK_........[0-9].*' | tail -n 3`; do echo "$i"; done

f:id:min117:20170306115040p:plain

できた。あとはアンダーバーを入れる処理を echo の次に入れる。これが難しい。

 NHK_20170113070002.ts.mp4

  ↓ アンダーバー挿入

 NHK_20170113_070002.ts.mp4

ーーー

処理としては

 NHK_20170113

までをまずは切り出して(手順①)、そのあとにアンダーバーを足して

 NHK_20170113_

にしてから、残りの

 070002.ts.mp4

を切り出して(手順②)連結し、最終的に

 NHK_20170113_070002.ts.mp4

になるようにする。

ーーー

手順①について。

bashで文字の切り出し(substr)が必要になる。awkできそう。

codezine.jp

 

スクリプトにする。

$ vim add_underBAR.sh

f:id:min117:20170306224632p:plain

実行してみる。

$ ./add_underBAR.sh

f:id:min117:20170306224817p:plain

手順① の切り出しはできた。同じ要領で手順②の切り出しもできる。

ーーー

アンダーバー挿入までのソース

$ vim add_underBAR.sh

f:id:min117:20170306225719p:plain

実行してみる。

$ ./add_underBAR.sh

f:id:min117:20170306225813p:plain

うまくいった。最後はファイル名変更(mv)すればよい。

ーーー

最終ソース

$ vim add_underBAR.sh

f:id:min117:20170306230523p:plain

実行してみる。

$ ./add_underBAR.sh

f:id:min117:20170306230552p:plain

完成。