-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2009年11月07日

[コマンド]単調増加 (減少) する数値列を表示する<seq>

clmemo@aka: seq で 0 padding した数字列を作る
Linux の seq コマンドは、シンプルな数列を作ってくれる。例えば、1 から 10 までの数字を表示させるには次のやうにする。


 今日初めて知ったコマンドなのか、以前使ったことがあるのか記憶もはっきりしませんが、覚えていないぐらいですから、ほとんど使ったことのないコマンドです。

 使ってみると簡単に書式指定ができるなどとても便利なのですが、それにしても余り知られていないのか、ほとんど見かけることのなかったことが、とても不思議且つ新鮮に思いました。Rubyなど使えば、「1..10」などと書けるのでありがたみが薄いのかもしれませんが、書式の指定までオプションで簡単に指定できるので、コマンドライン操作が格段に向上しそうです。

 シェルを使えば、ファイルディスクリプタを作る必要もないのでファイル操作が簡単に済みますし、やはりこの組み合わせは強力だと思います。余り使う機会はないかもしれませんが、覚えておいて損はないでしょう。

u8w@u8w-desktop:~/xxxx % for i in `seq -f 'xxx_%04g.txt' 101 107`; do touch "$i"; done
u8w@u8w-desktop:~/xxxx % ls
xxx_0101.txt  xxx_0102.txt  xxx_0103.txt  xxx_0104.txt  xxx_0105.txt  xxx_0106.txt  xxx_0107.txt


 %04gのgの部分が書式指定子みたいです。manをみるとこれが標準みたいで整数になるみたいです。普通はdだと思うのですが、ジェネリック(一般的)というような意味でしょうか。fにすると小数点になるみたいです。


 いよいよ使い道が乏しいみたいですが、次のようなことも出来ました。必要に応じ、応用次第では便利に且つ正確に使えることもありそうです。区切り文字も変更しています。

u8w@u8w-desktop:~/xxxx % for i in `seq -s '--->' -f 'オリンピック_%g.txt' 1964 4 2009`; do echo "$i"; done
オリンピック_1964.txt--->オリンピック_1968.txt--->オリンピック_1972.txt--->オリンピック_1976.txt--->オリンピック_1980.txt--->オリンピック_1984.txt--->オリンピック_1988.txt--->オリンピック_1992.txt--->オリンピック_1996.txt--->オリンピック_2000.txt--->オリンピック_2004.txt--->オリンピック_2008.txt
オリンピック_1968.txt
オリンピック_1972.txt
オリンピック_1976.txt
オリンピック_1980.txt
オリンピック_1984.txt
オリンピック_1988.txt
オリンピック_1992.txt
オリンピック_1996.txt
オリンピック_2000.txt
オリンピック_2004.txt
オリンピック_2008.txt


減算:
u8w@u8w-desktop:~/xxxx % for i in `seq -f 'オリンピック_%g.txt' 2008 -4 2000`; do echo "$i"; done
オリンピック_2008.txt
オリンピック_2004.txt
オリンピック_2000.txt




使い方として、こちらの方が安全かもしれません。
for i in `seq -f 'xxx_%04g.txt' 10`; do echo "$i"; done|xargs -i touch {}

Powered by ScribeFire.



この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/33486137

この記事へのトラックバック