連番の名前がついたファイルを操作(bash)

カメラやスキャナから取り込んだ連番のついたデータを、たとえばタイトルごとにディレクトリをわけて整理したいとき、Linuxのコマンドではどのように操作するのがいちばんラクか。その答えはおそらく、ブレース展開{}を使ってforループで回す。

たとえば、リコーのカメラだと「RIMG0001.JPG」というように名前がつきます。こうして並んだファイルの「RIMG0023.JPG」から「RIMG0056.JPG」までを他のディレクトリにコピーしたいとき。


for filename in RIMG{0023..0056}.JPG; do cp $filename directoryname; done

でよいわけですね。こんなラクだったのですね。もっと複雑なスクリプト書いてました。


追記:

いや、ちがう。コピーをするのにfor文でループを回す必要はないですね。だから、もっと簡単になります。


cp RIMG{0023..0056}.JPG directoryname

でよいわけですね。わざわざ複雑に考えていました。何をやっているのやら…。要はブレース展開を使えばよいということです。

ブレース展開は、bash3.0から使えるようになったという話です。