68user's page 掲示板

Prev< No. 4870〜4884> Next  [最新発言に戻る] [過去ログ一覧]
No. 4870 # 68user 2008/02/06 (水) 11:42:01
>>4869 しも
よくわかりませんが ls(1) の結果は使えないんでしたっけ?
あとは cksum・wc・find とか。それ以外なら awk・perl あたりでしょうか。

cksum
    http://docs.hp.com/ja/B2355-60129/cksum.1.html
wc
    http://docs.hp.com/ja/B2355-60129/wc.1.html
find . -ls
    http://docs.hp.com/ja/B2355-60129/find.1.html

No. 4871 # しも [E-mail] 2008/02/06 (水) 17:47:36
>>4870 68user
ありがとうございます。
ファイル個々のサイズはcksumやwcで確かに確認できました。
ディレクトリのサイズはbyte表示させる事は不可能なのでしょうか?

duを使用しましたが、KBだったのとブロック単位でした。

No. 4872 # 68user 2008/02/06 (水) 20:57:05
>>4871 しも
HP-UX に限らず、du ではブロックカウント機能しかないと思います。
    http://sonic64.com/2004-05-26.html
のように自前でカウントするしかないでしょう。

No. 4873 # 大臣 2008/02/07 (木) 15:45:40
cygwinでbash not find :bash.exeというエラーがでんだけどどうすれば
いいか教えろ!!!!!どーせ暇だろ!ニート諸君、俺様の変わりに調べろ!
パスの設定はしてある。
俺も暇じゃないから5分やるですぐ調べて返信しろ。貴様らは蛆虫だ。
./bashrc等も完璧
しかーーーーし動かん。楽勝だて。

No. 4874 # ふくし 2008/02/08 (金) 17:11:14
お世話になります。
質問のときだけ現れてスミマセン。
Perl で、

filename -> title
aaa.html -> aaaについて
bbb.html -> bbbについて
ccc.html -> cccについて

みたいなタブ区切りのテキストを読んで処理するとき、カンタンには

while (<>) {
    ($filename, $title) = <>;
}

のようにすると思いますが、1行目に見出しが入っていて、
これを捨てたいと思います。

今は、

$trash = <>;
while (<>) {
    ($filename, $title) = <>;
}

のようにしていますが、
$trash が1回しか使われていませんが書き間違いではありませんか、
という警告が出ます。
警告だから無視すればいいようなものですが、
もっとスマートな書き方はあるでしょうか。

No. 4875 # 68user 2008/02/08 (金) 17:20:10
>>4874 ふくし
- <>;
- my $trash = <>;
- (undef)=<>;
のいずれかでどうでしょうか。Perl5.8.8 では問題ありませんでした。

No. 4876 # ふくし 2008/02/08 (金) 17:51:25
>>4875 68user
さん、ありがとうございます。
いずれも 5.10.0 でもうまくいきました。

(undef) = <>;

というのは自分で思いついていたんですが、
リストコンテクストで評価されて、
全部の行が代入されたのち2行目以降は捨てられる
(1行目も undef だから捨てられる)
ような気がしていました。
ありがとうございます。

No. 4877 # 68user 2008/02/08 (金) 18:48:31
>>4876 ふくし
ああそうですね。書くなら
    (undef)=scalar(<IN>);
でしょうか。しかし仕事でこのコード見たらイラッとしますねぇ。

No. 4878 # has 2008/02/09 (土) 00:08:12
>>4873 大臣
ご期待に沿えず残念ですが、たぶん多忙で善良なプロの皆さんとかからの
回答になると思います。
どのくらい完璧か晒したら進言あるかもですよ。

No. 4879 # ふくし 2008/02/13 (水) 10:56:17
そういえば(どういえばだ)以前(数年前)Perl で

goto FIN;
sub foo {}
FIN:

だとエラーになるけど

goto FIN;
FIN:
sub foo {}

または

goto FIN;
sub foo {}
FIN:
;

だとダメ、という件があったんだけど、急に思い立って perlbug してみました。
2時間後に返事が来て(すげえな)perlsyn に書いてあるけど
それはバグではない、ラベルの後には1個以上の文がなければならないと
いうことです。FAQらしいですね。

No. 4883 # しも [E-mail] 2008/02/14 (木) 15:55:49
>>4872 68user
返信が遅くなりました。
68userさんの仰るように、自分でツールを作成する必要がある事を理解しました。
awkを使って作成しようと思います。
初めて作るので、時間がかかりそうですが結果はまた報告にきます。
ありがとうございました。

No. 4884 # ふくし 2008/02/15 (金) 01:20:39
>>4883 しも
さん、

どっちみち初心者だったら awk より Perl をおすすめします。
汎用性があるし可読性も高くできると思います。
ちょっと書いてみるとこんな感じでしょうか。

★さしでがましければすみません。ここで読むのやめてください ^^





#! /bin/perl -w
# dsize -- カレントディレクトリ以下のファイルサイズを集計

use File::Find;

$total = 0;
find(\&fileProc, '.');
print "Total\t$size\n";

sub fileProc {
    return unless -f $_;
    $size = -s $_;
    print "$File::Find::name\t$size\n";
    $total += $size;
}

Prev< No. 4870〜4884> Next  [最新発言に戻る] [過去ログ一覧]