Linuxの wc(word count)コマンドは、テキストファイルや標準入力の 行数・単語数・文字数・バイト数 をカウントするためのコマンドです。名前は「word count」に由来しますが、行数やバイト数の計測にも広く使われます。
実務では、ログファイルの行数確認、grep や find の結果件数を数える場面で特に役立ちます。
構文(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: 行処理や文字列編集
参考
- manページ: man7.org wc(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント