このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:コマンドと組み合わせたフィルタの例

コマンドと組み合わせたフィルタの例
フィルタは単独でも役立ちますが、パイプラインを使って他のコマンドと組み合わせることで、より複雑で高度な処理を実現できます。ここでは、フィルタを利用してコマンドをどのように組み合わせていくのか、具体的な例を挙げて解説します。

例題:/bin
ディレクトリのファイルをサイズの大きい順に並べ、上位5つを表示する
タスクの概要
「/bin
ディレクトリ内のファイルを、サイズの大きい順に並べ、上位5つを表示する」というタスクについて考えてみましょう。
ステップ1:du
コマンドでファイルサイズを取得
まず、各ファイルのサイズを調べるために、du
コマンドを使用します。
du
コマンドの概要
役割:指定したファイルやディレクトリの使用容量を表示する。
【書式】 du [オプション] [ファイル/ディレクトリ]
主なオプション
オプション | 説明 |
---|---|
-b | サイズをバイト単位で表示する |
-h | 人間が読みやすい形式(KB、MBなど)で表示 |
-s | 合計サイズのみを表示する |
コマンドの実行
user01@ubuntu-vm:~$ du -b /bin/*
出力例
11 /bin/GET
11 /bin/HEAD
11 /bin/POST
48 /bin/VBoxAudioTest
45 /bin/VBoxClient
54 /bin/VBoxClient-all
46 /bin/VBoxControl
...(以下省略)...
解説
- 左側の数値:ファイルのサイズ(バイト単位)
- 右側の文字列:ファイルのパス
ステップ2:sort
コマンドでサイズ順に並べ替え
取得したファイルサイズを元に、サイズ順に並べ替えるために sort
コマンドを使用します。
sort
コマンドの概要
役割:入力された行を並べ替える。
【書式】sort [オプション]
主なオプション
オプション | 説明 |
---|---|
-n | 数値として比較してソートする |
-r | ソート結果を逆順(降順)にする |
-k | 指定した列でソートする(デフォルトは1列目) |
コマンドの実行
user01@ubuntu-vm:~$ du -b /bin/* | sort -n
出力例
1 /bin/X11
2 /bin/ghostscript
2 /bin/unxz
2 /bin/xzcat
3 /bin/captoinfo
...(以下省略)...
解説
du
コマンドの出力をパイプ|
でsort
コマンドに渡しています。-n
オプションにより、数値として比較し、ファイルサイズの 小さい順(昇順) に並べ替えています。
ステップ3:tac
コマンドで順序を逆転
サイズの大きい順(降順)に並べ替えるために、行の順序を逆にする tac
コマンドを使用します。
tac
コマンドの概要
役割:入力された行の順序を逆にして出力する。
【書式】tac [ファイル]
コマンドの実行
user01@ubuntu-vm:~$ du -b /bin/* | sort -n | tac
出力例
15815640 /bin/snap
10280648 /bin/gdb
8334360 /bin/gtk4-encode-symbolic-svg
6443872 /bin/ubuntu-report
5901416 /bin/python3.10
5070240 /bin/shotwell
...(以下省略)...
解説
sort -n
で昇順に並べ替えた結果を、tac
コマンドで順序を逆転させています。- これにより、ファイルサイズの 大きい順(降順) に並べ替えられます。
ステップ4:head
コマンドで上位5つを表示
ファイルサイズの大きい上位5つだけを表示するために、head
コマンドを使用します。
head
コマンドの概要
役割:ファイルや入力の先頭部分を表示する。
【書式】head [オプション]
主なオプション
オプション | 説明 |
---|---|
-n 数値 | 先頭から指定した行数を表示する |
コマンドの実行
user01@ubuntu-vm:~$ du -b /bin/* | sort -n | tac | head -n 5
出力例
15815640 /bin/snap
10280648 /bin/gdb
8334360 /bin/gtk4-encode-symbolic-svg
6443872 /bin/ubuntu-report
5901416 /bin/python3.10
解説
head -n 5
により、先頭5行のみを表示しています。- これで、ファイルサイズの大きい上位5つのファイルを確認できます。
コマンド全体の流れ
$ du -b /bin/* | sort -n | tac | head -n 5
- ファイルごとにサイズを表示:
du -b /bin/*
・/bin
ディレクトリ内の各ファイルのサイズをバイト単位で表示。 - 数値順にソート(昇順):
| sort -n
・ファイルサイズを数値として小さい順に並べ替え。 - 逆順に並び替える(降順):
| tac
・行の順序を逆転し、ファイルサイズの大きい順に変更。 - 先頭5行を表示:
| head -n 5
・上位5つのファイル情報を表示。
パイプライン処理の意義
- シンプルなコマンドの組み合わせ:個々のコマンドは単純な処理を行いますが、組み合わせることで複雑なタスクを実現できます。
- 柔軟性と再利用性:専用のスクリプトを作成するよりも、状況に応じてコマンドを組み合わせる方が柔軟で、さまざまなケースに対応できます。
- 効率的なテキスト処理:Linuxがテキスト処理に強いと言われる理由の一つであり、大量のデータを効率的に処理できます。
まとめ
フィルタとパイプラインを組み合わせることで、Linuxではシンプルなコマンドを活用して複雑なデータ処理が可能になります。今回の例では、du
、sort
、tac
、head
といったコマンドを組み合わせて、/bin
ディレクトリ内のファイルをサイズの大きい順に並べ、上位5つを表示しました。
これらの技術を活用することで、日常の作業効率を大幅に向上させることができます。さまざまなフィルタコマンドとパイプラインを駆使して、自分のニーズに合ったデータ処理を実現してみてください。