ディレクトリ内のファイル名を一括で変更する(AWK)

mod09gqk_mongol_2000056_ndvi.tifのような名前のファイルが大量にあったので、これをndvi_2000056.tifのように一括で変更する。

lsでリストした出力をパイプ"|"でつなぎ、awkで、$1に引き渡す。substr(A,B,C)は、変数Aを頭からB番目の文字をC個、抽出するという組み込み関数。

"mv" "ndvi_" ".tif"をprintで表示させる。

gawk '{print "mv",$1, "ndvi_"substr($1,17,7)".tif";}'

で、

mv mod09gqk_mongol_2000056_ndvi.tif ndvi_2000056.tif

のように書くことができるので、それをそのままパイプ"|"でつなぎshにひきわたすことで、実行される。

ls |gawk '{print "mv",$1, "ndvi_"substr($1,17,7)".tif";}' |sh