連番の名前がついたファイルを操作(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から使えるようになったという話です。