十数回ならばまだしも数十回,数百回,この作業を続けるのは非現実的なのでコマンドでぱぱっと解決したいと思います.
利用するのは for ループと数値計算,加えてコマンド置換と printf コマンドです.
答えを先に示してしまうとこんな↓感じ
$ j=1
$ for i in *.png
> do
> mv ${i} $( printf %03d ${j} ).png
> j=$(( $j + 1 ))
> done
|
まず,変数 j に 1 を代入し,次に for ループを開始.
変数 i に該当する PNG ファイルを代入したら,mv コマンドでその PNG ファイルのファイル名を j に変更.
その際,コマンド置換と printf の組み合わせで桁合わせ(ここでは三桁表示).
最後に,j を j + 1 に更新して,for ループの始めに戻る.
| $ ls |
してみると,
001.png 002.png 003.png 004.png 005.png 006.png 007.png 008.png 009.png 010.png 011.png 012.png 013.png 014.png 015.png ・・・ ・・・ (中略) 051.png 052.png |
みたいな感じになり,無事成功.
例えば,前回のトリミングの話や tar コマンドを組み合わせると,こんなこともできそうです.↓
$ j=1
$ for i in *.png
> do
> k=02$( printf %03d ${j} ).png
> convert -crop 1368x1080+213+0 ${i} ${k}
> tar rvf hoge.tar ${k}
> rm ${i}
> j=$(( $j + 1 ))
> done
|
それにしても for ループで大量のファイルを扱うときはミスがないかいつもハラハラします.
ヘタすると取り返しの付かない事態になりかねませんからね.
だから,こんな記事書いて忘れないようにしてるんですけど.








