wc (word count) 是 Linux 統計檔案行數、單字數、位元組數的標準工具,常搭配管道進行日誌分析、程式碼統計。本文詳細說明參數用法、換行符陷阱與實戰範例。
wc [選項] [檔案...]
無選項時輸出:行數 字數 位元組數 檔名
$ wc wc1.txt
3 5 16 wc1.txt
| 參數 | 功能 |
|---|---|
-l, --lines | 顯示行數 |
-w, --words | 顯示字數(以空白分隔) |
-c, --bytes | 顯示位元組數 |
-m, --chars | 顯示字元數(支援多位元組字元) |
-L, --max-line-length | 顯示最長行長度 |
wc -l 統計的是 換行符(LF, \n)個數,而非視覺上的行數。
$ perl -e 'print "a"' | wc -l
0
$ perl -e 'print "a\n"' | wc -l
1
陷阱: 檔案最後一行若無換行符,wc -l 會少算一行。建議用 cat -A 或 hexdump -C 檢查。
wc -c 計 3,wc -m 計 1。# 統計 .cpp 檔案總數
find . -name "*.cpp" | wc -l
# 統計 .h 檔案總行數 + 各檔行數
find . -name "*.h" | xargs wc -l
# 方法一:ls + grep(含子目錄加 -R)
ls -l | grep "^-" | wc -l
ls -lR | grep "^-" | wc -l
# 方法二:find(速度更快,預設遞迴)
find . -type f | wc -l
# 僅當前目錄
find . -maxdepth 1 -type f | wc -l
who | wc -l
wc -w 預設以空白字元分隔單字。若需按逗號、冒號分隔,需搭配 tr 或 awk:
# 統計 CSV 欄位數
cat data.csv | tr ',' '\n' | wc -l