本を読む

読書やコンピュータなどに関するメモ

Re: コマンドラインで連番のファイル名を作る

$ for i in `perl -e 'printf("%0.2d\n", $_) for (1..27)'` ; do rm -f /usr/local/apache/logs/old/access_log.200801$i*.gz ; done
$ i=1; limit=13; while [ $i -le $limit ]; do j=$(printf "%03d" $i); echo access_log.200801$j; i=$(($i+1)); done

 お二方のやりかたでまったく問題はないと思いますが、bashやzsh、kshであれば、算術forを使うのもアリかなと思いました。POSIX-shやBourne Shellでは使えませんが。

$ for ((i=1; i<=27; i++));do printf "access_log.200801%02d\n" $i;done

 ちなみにseqかjotかという話を抜かすと、seqではこんな感じですね。

$ seq -f 'access_log.200801%02g' 1 27

修正2008-09-25: 自分のコードだけprintfまわりの冗長な部分を整理しました。どう見ても後出しジャンケンです、本当に(ry

追記2008-09-30: 言及はてブで、zshでは「print -l access_log.200801{01..27}」でいけると教えていただきました。zshすげー。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/454-c9bd6dcf

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad