それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ファイル名を0埋めして数字の番号順に並べてファイル名を付け直す

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