0埋めされてないと結構面倒くさいですよね。
takuya@:2$ ll | head 合計 61404 -rw-r--r-- 1 takuya takuya 8014 2016-02-04 18:15 1.jpg -rw-r--r-- 1 takuya takuya 3931 2016-02-04 18:15 10.jpg -rw-r--r-- 1 takuya takuya 2852 2016-02-04 18:15 100.jpg -rw-r--r-- 1 takuya takuya 3259 2016-02-04 18:15 101.jpg -rw-r--r-- 1 takuya takuya 3596 2016-02-04 18:15 102.jpg -rw-r--r-- 1 takuya takuya 3367 2016-02-04 18:15 103.jpg
ファイル名が0から始まらないと辞書順に並んじゃって 、数字順に並ばないと、とても不便です。
ls で並べるだけならカンタン。
ls -v
ls に -v をつければ、数字順に解釈してくれる
takuya@:2$ ll -v | head 合計 61404 -rw-r--r-- 1 takuya takuya 280140 2016-02-04 18:15 1.jpg -rw-r--r-- 1 takuya takuya 131223 2016-02-04 18:15 2.jpg -rw-r--r-- 1 takuya takuya 251102 2016-02-04 18:15 3.jpg -rw-r--r-- 1 takuya takuya 223594 2016-02-04 18:15 4.jpg -rw-r--r-- 1 takuya takuya 159563 2016-02-04 18:15 5.jpg -rw-r--r-- 1 takuya takuya 403262 2016-02-04 18:15 6.jpg -rw-r--r-- 1 takuya takuya 321086 2016-02-04 18:15 7.jpg
ファイル名を変更する
このソートを使ってファイル名を変更することにする。
0埋めで ファイル名を付け直す。
毎回-v
するのも面倒だし、プログラムが意図しない動作をしそうなので、ファイル名をゼロ始まりにしておいて、一括処理をしやすくしてお事にした。
cd $target for i in $(ls -v ) ; do mv $i $(printf '%05d.jpg' $( basename $i .jpg ) ) ; done
ポイント
printf で0うめしてる。
printf '%05d' 100
sort -n で
sort を使っても良いんだけど・・・ ls -l の結果を並べようと思うとやっぱり面倒だよね
takuya@:2$ ls | sort -n | head 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg 10.jpg