Linuxのwcコマンドとは?行数・単語数・文字数を数える使い方を解説

コマンドリファレンス

Linuxの wc(word count)コマンドは、テキストファイルや標準入力の 行数・単語数・文字数・バイト数 をカウントするためのコマンドです。名前は「word count」に由来しますが、行数やバイト数の計測にも広く使われます。
実務では、ログファイルの行数確認、grepfind の結果件数を数える場面で特に役立ちます。

構文(Syntax)

wc [オプション] [FILE...]

オプションなしで実行した場合の出力

ファイルを指定してオプションなしで実行すると、行数・単語数・バイト数・ファイル名 の順に表示されます。

wc file.txt
  10   25  150 file.txt

左から順に「10行、25単語、150バイト、ファイル名」を意味します。なお、デフォルトでは バイト数(-c が表示され、文字数(-m)ではない点に注意してください。

主なオプション一覧

オプション説明使用例
(なし)行数・単語数・バイト数を表示wc file.txt
-l行数を表示wc -l file.txt
-w単語数を表示wc -w file.txt
-m文字数を表示(マルチバイト対応)wc -m file.txt
-cバイト数を表示wc -c file.txt
-L最長行の文字数を表示wc -L file.txt

基本オプションの使い方

wc -l:行数をカウントする

ファイルの行数だけを表示します。ログファイルの行数確認などに最もよく使われるオプションです。

wc -l file.txt
10 file.txt

wc -w:単語数をカウントする

空白・タブ・改行で区切られた「単語」の数を数えます。

wc -w file.txt
25 file.txt

wc -m:文字数をカウントする

マルチバイト文字(日本語など)を考慮した 文字数 を表示します。UTF-8環境では、日本語1文字は1文字としてカウントされます。

wc -m file.txt
148 file.txt

wc -c:バイト数をカウントする

ファイルの バイト数(データサイズ)を表示します。ASCII文字は1文字=1バイトですが、UTF-8の日本語は1文字=3バイトとなります。

wc -c file.txt
150 file.txt

文字数とバイト数の違い

wc -m(文字数)と wc -c(バイト数)は混同されやすいオプションです。

オプション数えるもの日本語1文字のカウント
-m文字数(Unicode文字単位)1
-cバイト数(物理的なデータサイズ)3(UTF-8の場合)

例えば、「こんにちは」(5文字)を含むファイルでは、-m は5を返しますが、-c はUTF-8環境で15(5文字×3バイト)を返します。

複数ファイルを指定した場合

複数ファイルを指定すると、各ファイルの結果と合計(total)が表示されます。

wc file1.txt file2.txt
  5   12   80 file1.txt
  8   20  100 file2.txt
 13   32  180 total

標準入力から数える

wc はファイルだけでなく、パイプで渡した標準入力のデータも処理できます。

# 文字列のバイト数を数える(改行文字を含む)
echo "hello world" | wc -c
12

echo は末尾に改行を追加するため、”hello world”(11文字)に改行1バイトを加えた12が返ります。改行を除きたい場合は echo -n を使います。

echo -n "hello world" | wc -c
11

パイプと組み合わせた使い方

wc は他のコマンドとパイプで組み合わせることで、結果の件数を数えるのに役立ちます。

grep の結果件数を数える

grep "ERROR" access.log | wc -l

ログファイルから “ERROR” を含む行の数を表示します。

find の結果件数を数える

find . -type f | wc -l

カレントディレクトリ以下のファイル数を表示します。

ls の結果件数を数える

ls *.log | wc -l

ディレクトリ内の .log ファイルの数を確認します。

ファイル名を表示しない方法

通常、wc はファイル名とセットで結果を表示します。

wc -l file.txt
10 file.txt

数値だけを取得したい場合は、リダイレクト(<)でファイルを渡す方法が有効です。

wc -l < file.txt
10

パイプ経由でも同様にファイル名なしで結果が得られます。

cat file.txt | wc -l
10

スクリプト内で数値だけを変数に格納したいときに便利です。

count=$(wc -l < file.txt)
echo "行数: $count"

実務での集計例

ログファイルの行数を数える

wc -l /var/log/nginx/access.log

Nginxのアクセスログのリクエスト件数を確認します。

特定期間のエラー件数を数える

grep "2026-06-09" error.log | wc -l

特定日付のエラーログ行数を数えます。

ディレクトリ内のファイル数を数える

find /var/log -name "*.log" -type f | wc -l

/var/log 以下のすべての .log ファイル数を数えます。

プロセス数を数える

ps aux | grep nginx | wc -l

nginxのプロセス数を確認します(ヘッダー行やgrepプロセス自身が含まれることに注意)。

よくある失敗例

wc -c と wc -m を混同する

日本語テキストの「文字数」を調べたいときに wc -c を使うと、実際の文字数より大きい値(バイト数)が返ります。日本語の文字数には wc -m を使いましょう。

# 誤り: バイト数が返る(UTF-8では日本語1文字=3バイト)
echo -n "テスト" | wc -c
# 出力: 9

# 正しい: 文字数が返る
echo -n "テスト" | wc -m
# 出力: 3

ファイル名が表示される理由が分からない

ファイル名を直接指定すると、結果にファイル名が付きます。数値だけ取得したい場合はリダイレクト(<)またはパイプを使います。

# ファイル名が表示される
wc -l file.txt
# → 10 file.txt

# ファイル名が表示されない
wc -l < file.txt
# → 10

空行も行数に含まれることを忘れる

wc -l は空行(改行のみの行)もカウントします。空行を除いた行数が必要な場合は grep と組み合わせます。

# 空行を除いた行数
grep -c "." file.txt

改行なしファイルで行数が想定と異なる

wc -l は改行文字の数を数えます。ファイルの最終行に改行がない場合、その行はカウントされません。

# 3行あるが最終行に改行なし → 2と表示される場合がある
printf "line1\nline2\nline3" | wc -l
# → 2

よくある疑問

wc は何を数えるコマンドですか?

wc(word count)コマンドは、テキストの 行数・単語数・文字数・バイト数 を数えます。オプションを指定しない場合は、行数・単語数・バイト数の3つを表示します。

行数だけ数えるにはどうしますか?

wc -l ファイル名 で行数だけ表示できます。ファイル名なしで数値のみ取得する場合は wc -l < ファイル名 を使います。

ファイル名を表示しないにはどうしますか?

リダイレクト(wc -l < file.txt)またはパイプ(cat file.txt | wc -l)で渡すと、ファイル名なしで数値だけ表示されます。

文字数とバイト数は何が違いますか?

文字数(-m)はUnicode文字の数、バイト数(-c)は物理的なデータサイズです。ASCII文字のみのファイルでは同じ値になりますが、日本語などのマルチバイト文字が含まれると異なります。

grep 結果の件数を数えるにはどうしますか?

grep "パターン" file.txt | wc -l でマッチした行数を数えられます。なお、grep -c "パターン" file.txt でも同じ結果が得られます。

関連コマンド

  • grep : パターンに一致する行を検索する。grep | wc -l で件数を取得できる
  • find : ファイルを検索する。find | wc -l でファイル数を取得できる
  • awk : より柔軟なテキスト集計処理
  • sed : 行処理や文字列編集

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント