2008-04-16

http://anond.hatelabo.jp/20080415182703

実行してみたら出力に変化がなかった。アルェー?

おっと、バグが。ちゃんとテストしてなかった。すんまそん。

# tree -pugs | perl -e '@line=<>; $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0]; map {s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e} @line; print @line'

毎回正規表現考えるのも面倒かなーとかとか。

理想を語ると出力形式指定できれば最強だなーとか妄想してた。

この辺は、ファイルにして ~/bin に放りこんで、自分好みに育て上げる、ってのがエロゲ^H^H^Hギーク楽しみ方かと。

雛型的には↓かなぁ。どうだろ。弾・monger・コーガイ氏が登場したら……滅多切りさるかもw

#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Std;
use vars qw($opt_t);

# オプション処理
getopts('t');
# $opt_tがセットされていたらタブ処理、ということにする。

# コマンド起動
# 引数処理とかシグナルとか面倒なところは……
open TREE, "tree -pugs ".join(" ",@ARGV,"|") or die;
my @line = <TREE>; # 富豪的にいく
close TREE; # ここで子プロセスの処理だっけ?
# それともwaitするんだっけ?

# ツリー表示部分の最大長を求める。
my $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0];
# 色々やる時はユーザ名とかグループ名とかファイル名とかの最大長がいるかも

foreach (@line) {
        if ($opt_t) {
                # タブ(\t)で位置をそろえるとか……
        } else {
                s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e;
        }
        print;
}

treeへのオプションの与え方とか、それによる出力の変化とか考えると、結構面倒だけど、自分用に決め打ちしとけば何とかなるでしょう。

あと、「[%p<>%u<>%g<>%s]」みたいなのはCPANに転がってたりしそうな気もするので、それを使うとか。

そんなところでなかろうか。

[追記]

http://search.cpan.org/~darren/String-Format-1.14/Format.pm というのがあった。

記事への反応 -
  • 元増田。 動かしてみて感動した! かなりいい感じ。雛型超感謝ですよー。 Format.pmも役に立ちそう。 というわけで早速元エントリ更新するお!

  • 元増田。 動かしてみて感動した! かなりいい感じ。雛型超感謝ですよー。 Format.pmも役に立ちそう。 というわけで早速元エントリ更新するお!

  • 便利すぐる!とか思ったんだけど、オプション次第では出力がちょっと汚い。 これってうまいこと成形できないかな。かな。 とりあえずオプションは-pugsくらいでおk。 ・treeって何よ...

    • 人力検索行った方がいぐね?

    • 元増田。 人力検索だと後で見にくくないかなーと思ってさ。 エントリ自体いろいろ書き換えていいエントリにしていけば後で見やすいかなーとか。 まあこのままスルーされそうな勢い...

    • BSDな人なのでtreeはしらん、とスルー気味だったけど。 | |-- [-rw-r--r-- hoge hoge 9108] HTTP_BAD_GATEWAY.html.var を前提に。 基本:そんなときのperlじゃね? 別にrubyでもsedでも良いけど、...

      • 反応してくれた人がイター! ちょっと嬉しい。 &gt; 別にrubyでもsedでも良いけど、正規表現で問題なくパース出来るんじゃない? 毎回正規表現考えるのも面倒かなーとかとか。 &gt; 位...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん