範囲の展開
良くダウンローダなんかで、file[001-029].jpgみたいな指定ができるけど、こういうのってshell上で使えないもんだろうか。多分どっかにありそうな気もするんだけど、とりあえずbashのmanだけみて、あきらめて作ることにする。なんで、こんなのが欲しいかというと、リッピングしたファイルを扱う時に、この手の連番ファイル操作に、うんざりするからだ。特に1CDに複数の曲が入っていると、連番の振り直しとかが必要で、面倒なこと、この上ない。で、最初はJavaで書いていたんだけど、やっぱり、こういうのはスクリプト言語ですな。
#!/usr/bin/ruby
print eval("(#{$*})").to_a.join(' ')
なんか一行で書けてしまうし... これをrangeという名前で格納。
$ range 1..5 1 2 3 4 5
よしよし。カレントのtrack01.flacからtrack05.flacを、/musicにコピーするには、これを利用してこうする。
$ for i in `range 1..5`; do cp track`printf %02d $(($i))`.flac /music/; done
応用編。カレントのtrack06.flacからtrack10.flacまでを、/musicにtrack01.flacからtrack05.flacという名前に変えてコピーするにはこうする。
$ for i in `range 6..10`; do cp track`printf %02d $(($i))`.flac /music/track`printf %02d $(($i-5))`.flac; done





