ablog

不器用で落着きのない技術者のメモ

サイズの大きいファイルを探す

$ du -a /opt|sort -n

...

19120408        /opt/app/oracle/admin/orcl/work/dump/exp_orcl_20100203123851.dmp
19120536        /opt/app/oracle/admin/orcl/work/dump/exp_orcl_20100203150412.dmp
19789772        /opt/app/oracle/oradata/orcl/temp07.dbf
19811300        /opt/app/oracle/oradata/orcl/temp06.dbf
19848200        /opt/app/oracle/oradata/orcl/temp05.dbf
19910724        /opt/app/oracle/oradata/orcl/temp04.dbf
19995800        /opt/app/oracle/oradata/orcl/temp03.dbf
49660280        /opt/app/oracle/admin/orcl/work/dump
160065180       /opt/app/oracle/admin/orcl/work/imp_schema/scott_201002_TEMP.dmp
160066044       /opt/app/oracle/admin/orcl/work/imp_schema
223956496       /opt/app/oracle/admin/orcl/work
232741724       /opt/app/oracle/admin/orcl
232741728       /opt/app/oracle/admin
1691683176      /opt/app/oracle/oradata/orcl
1691683180      /opt/app/oracle/oradata
1925968816      /opt/app/oracle
1925968820      /opt/app
1925969804      /opt

関連


追記(2016/02/21):

容量をくってるベスト100を表示

du -ma | sort -rn | head -100

ディレクトリのみを検索する場合はこちら

du -m | sort -rn | head -100
linux ファイル容量降順にソート - Qiita

Oracle の分析関数 dense_rank()

Oracle の dense_rank() 関数を使うと、

  • ある列の値で順位をつける。
  • 同順位がある場合は順位を飛ばさない。

ということを実現できる。

SQL

SQL> select sid, serial#, program, dense_rank() over(order by program) from v$session;

実行結果

       SID    SERIAL# PROGRAM                                          DENSE_RANK()OVER(ORDERBYPROGRAM)
---------- ---------- ------------------------------------------------ --------------------------------
       248      57430 JDBC Thin Client                                                                1
       246       1841 JDBC Thin Client                                                                1
       218      63648 JDBC Thin Client                                                                1
       220      30967 JDBC Thin Client                                                                1
       221      11553 JDBC Thin Client                                                                1
       253       8720 JDBC Thin Client                                                                1
       228        466 SQL Developer                                                                   2
       223      21506 ob10.exe                                                                        3
       239      59748 ob10.exe                                                                        3
       229       6288 ob9.exe                                                                         4
...

WWW::Mechanize と Web::Scraper を使って HTML からテキストを抽出して CSV を作成する Perl スクリプト

ちょっと書いてみた Perl スクリプトをメモっておく。

#!/usr/bin/env perl
use strict;
use warnings;
use WWW::Mechanize;
use Web::Scraper;
use utf8;
use Encode;

my $mech = 'WWW::Mechanize'->new('autocheck', 1);
$mech->get('http://www.ablog.co.jp/login');
$mech->submit_form('fields', {'name', 'foo', 'password', 'bar'});
$mech->get('http://www.ablog.co.jp/contract');
$mech->submit_form();

my $scraper = scraper {
	use utf8;
	process '/html/body/div/div[3]/table/tbody/tr',
	'list[]' => scraper {
		process '//td[3]', contract => 'TEXT';
		process '//td[4]', status => 'TEXT';
		process '//td[5]', expired => 'TEXT';
		process '//td[6]', customer => 'TEXT';
		process '//td[7]', group => 'TEXT';
		process '//td[8]', permission => 'TEXT';
		process '//td[9]', notes => 'TEXT';
	}
};

my $res = $scraper->scrape($mech->content);
for my $list (@{ $res->{list} }) {
	for (values(%$list)) {
		s/\s+//sg;
	}
}

&write_csv("contract.csv", $res->{list});

sub write_csv {
	my ($name, $data) = @_;

	open my $csv, ">:encoding(utf8)", $name or die $!;
	for my $code (@$data) {
		printf $csv qq{"%s","%s","%s","%s","%s","%s"\n}, @{$code}{qw/contract status expired customer group permission/};
	}
	close $csv;
}

__END__


追記(2010/03/24):

s/\s+//sg; のあたりはWeb::Scraperのfilterでやったほうが手っ取り早いかも?:
process '//td[3]', contract => ['TEXT', sub {s/\s+//sg;} ];

WWW::Mechanize と Web::Scraper を使って HTML からテキストを抽出して CSV を作成する Perl スクリプト - ablog

id:otsune さんにコメントを頂いたので、教えて頂いた書き方で書きなおしてみた。

#!/usr/bin/env perl
use strict;
use warnings;
use WWW::Mechanize;
use Web::Scraper;
use utf8;
use Encode;

my $mech = 'WWW::Mechanize'->new('autocheck', 1);
$mech->get('http://www.ablog.co.jp/login');
$mech->submit_form('fields', {'name', 'foo', 'password', 'bar'});
$mech->get('http://www.ablog.co.jp/contract');
$mech->submit_form();

my $scraper = scraper {
	use utf8;
	process '/html/body/div/div[3]/table/tbody/tr',
	'list[]' => scraper {
		process '//td[3]', contract => ['TEXT', sub {s/\s+//sg;} ];
		process '//td[4]', status => ['TEXT', sub {s/\s+//sg;} ];
		process '//td[5]', expired => ['TEXT', sub {s/\s+//sg;} ];
		process '//td[6]', customer => ['TEXT', sub {s/\s+//sg;} ];
		process '//td[7]', group => ['TEXT', sub {s/\s+//sg;} ];
		process '//td[8]', permission => ['TEXT', sub {s/\s+//sg;} ];
		process '//td[9]', notes => ['TEXT', sub {s/\s+//sg;} ];
	}
};

my $res = $scraper->scrape($mech->content);
&write_csv("contract.csv", $res->{list});

sub write_csv {
	my ($name, $data) = @_;

	open my $csv, ">:encoding(utf8)", $name or die $!;
	for my $code (@$data) {
		printf $csv qq{"%s","%s","%s","%s","%s","%s"\n}, @{$code}{qw/contract status expired customer group permission/};
	}
	close $csv;
}

__END__