エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする

      2020/07/27

wcコマンドで行数、単語数、バイト数、文字数をカウント

 

wcコマンドは Word Countの略で文字数をカウントする

 
Linuxのコマンドで、指定されたファイル内の行数、単語数、バイト数、文字数をカウントするコマンドである「wc」コマンドについて解説します。
 
「wc」は「Word Count」の略です。
 
 

wcコマンドの基本的な使い方

 
使用例としては以下のようになります。
 

 
まずはじめに、「cat」コマンドを使い、「file_name2」の内容を確認し、その後に「wc」コマンドで行数、単語数、バイト数をカウントした結果を表示しています。
 
「file_name2」の前に表示されている「3」が「行数」、「9」が「単語数」、「40」が「バイト数」となります。
 
 
また、複数行をまとめて指定した場合は、下記の様に「合計」の行が追加して表示されます。
 

 
 
また、複数行を指定する方法として、下記の様に複数のファイル名をスペースで区切って指定することも出来ます。
 

 
 

wcコマンドの主なオプション

 
wcコマンドの主なオプションは以下の通りとなっています。
 

オプション 説明
-c、–bytes バイト数を表示する
-l、–lines 行数を表示する
-m、–chars 文字数を表示する(マルチバイト文字に対応)
-w、–words 単語数を表示する
-L、–max-line-length もっとも長い行の長さを表示する
–files0-from=リスト Null文字で区切られたファイル名のリストを指定する(「–files0-from=-」とした場合は、ファイル名を標準入力から読み込む)

 
 

「-l」オプションで行数のみを表示する

 
オプションを付けない場合は、行数、単語数、バイト数の 3つを表示しますが、行数のみを表示したい場合は「-l」オプションを設定します。
 

 
 

「-w」オプションで単語数のみを表示する

 
オプションを付けない場合は、行数、単語数、バイト数の 3つを表示しますが、単語数のみを表示したい場合は「-w」オプションを設定します。
 

 
 

「-c」オプションでバイト数のみを表示する

 
オプションを付けない場合は、行数、単語数、バイト数の 3つを表示しますが、バイト数のみを表示したい場合は「-c」オプションを設定します。
 

 
 

「-m」オプションで文字数のみを表示する

 
オプションを付けない場合、もしくは、「-c」オプションを付けた場合に表示されるのは「バイト数」ですが、マルチバイトに対応した「文字数」を表示したい場合は「-m」オプションを設定します。
 

 
 

行数、単語数、文字数、バイト数の表示順番は決まっている

 
なお、行数、単語数、文字数、バイト数の表示される順番は「行数、単語数、文字数、バイト数」と決まっており、下記の様にオプションの順番を入れ替えても表示される順番は常に同じとなっています。
 

 
 

--files0-from=リスト」オプションでファイルリストを指定してカウントする

 
--files0-from=リスト」オプションは、カウントするファイルのリストを指定するオプションです。
 
そのため、まず下記の様なファイルリストを作成します。
 

 
しかし、「–files0-from=リスト」オプションで使用することが出来るファイルリストは、改行ではなく Null文字で区切られている必要がありますので、下記の様に「tr」コマンドを使用して改行を Null文字に置換します。
 
その上で「wc」コマンドに渡します。
 

 
--files0-from=リスト」オプションですが、上記のようにリストに「-」を指定する「--files0-from=-」形式とすることで標準入力を受け取ることが出来るようになります。
 
また、「tr」コマンドは文字列を置換するコマンドで、「\n」が改行で、「\0」が Null文字になります。
下記の記事を参考にしてください。
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
 
 
「wc」コマンドで表示表示されるカウント数は、スペースで区切られていますので、数値の桁が違うとキレイに並びません。
 
そんなときは、再び「tr」コマンドを使って、スペースをタブに置換することでキレイに並べることが出来ます。(「\t」がタブになります。)
 

 
 
また、下記の様に「find」コマンドで検索にヒットしたファイルを元にファイルのリストを作成する方法もあります。
 

 
「find」コマンドの検索結果は通常は改行で区切られますが、「wc」コマンドでは Null文字区切りにする必要がありますので、「-print0」オプションを使用します。
これを利用することで「find」の結果をファイルのリストとして使用することが出来るようになります。
 
また、「wc」コマンドで出力した結果はここでも「tr」コマンドを利用してタブ区切りに置換し、表示を整えています。
 
 
ちなみに、タブ区切りをスペース区切りに変換する場合は「expand」コマンド、スペース区切りをタブ区切りに変換する場合は「unexpand」コマンドなどもあります。
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
 
 

wcコマンドで findでヒットしたファイル数をカウントする

 
wcコマンドは findで検索してヒットしたファイルの数をカウントするときにも使うことが出来ます。
 
まず、カレントディレクトリ内のファイルを確認します。
 

 
 
このディレクトリ内のファイルを「find」コマンドで検索を行い、その結果を「wc」コマンドで行数をカウントすることで検索にヒットした件数をカウントしています。
 

 
 
上記の例では「file_name」というファイル名が含まれるファイルを検索していますが、カレントディレクトリ内にあるファイルの数をカウントしたい場合は、下記の様に記述します。
 

 
 
ここでのポイントは、「find」で検索する対象を「-type f」でファイルに限定している点です。
 
下記のように「-type f」を付けずに「find」コマンドを実行すると、カレントディレクトリ自体も検索対象となるため、1行多くカウントされてしまいます。
 

 
 
ちなみに、「ls -l」で表示された結果でカウントすると、「合計 12」の行も含まれるため、「4行」となってしまいます。
 

 
そのため、「grep」コマンドを使って「合計 12」の行を取り除く必要があります。
 

 
 
もしくは、「ls」コマンドを使う場合は、「-l」オプションを使わずに、ファイル名のみを表示し、単語数でカウントを行います。
 

 
 
今回の記事では、「wc」コマンドについて解説をしましたが、ファイルの内容、および、テキスト情報についての操作に関連するコマンドは下記の記事にまとめていますので、あわせて参考にしてください。
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド

 - Linuxコマンド

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も

catはLinuxのコマンドで、本来の機能はファイルを連結だが、ファイルの内容を表示する機能のために使うことが多く使用頻度が高い。同種の機能のmore、less、tacコマンドについても解説。

UNIX・Linuxの sedコマンドで特定の文字列を置換する方法

UNIX・Linuxのコマンドで特定の文字列を置換する sedコマンドの使い方と、perlコマンドを使っての方法を解説しています。

Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man
Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man

Linuxのコマンドの実行ファイルやマニュアルの情報を確認するコマンドwhich、whereis、whatis、apropos、manの機能と使い方、似たところと違うところの紹介。

Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドは指定したサイズにファイルを分割する

Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。

cat、less、head、tail、split、sedなどLinuxでファイルを操作するコマンド
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド

Linuxでファイル、テキストを操作するコマンドのまとめ。cat、less、head、tail、split、tr、sedなど、ファイルを表示、置換、連結、分割などの各コマンドの使い方の紹介と詳細ページの紹介。

Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法
Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法

Linuxのファイルのタイムスタンプにはmtime、ctime、atimeの3種類がある。その違いを詳細に解説しつつ、lsで表示するオプション、touchで更新するオプションを解説。

Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する
Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する

Linuxで実行したコマンドの履歴を確認するコマンド「history」。「history」の使い方、設定の変更、設定ファイルの設置場所について解説。「!番号」「!文字列」「!?文字列」など。

less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド

Linuxにはコマンドで実行した結果が長い場合、1画面ごとに区切って表示するコマンドが用意されている。それがページャーと呼ばれるmore、lessだ。この使い方を解説。

Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
Linuxのnlは行番号を付与してファイルの内容を表示するコマンド

Linuxでファイルを表示する際に行番号を付与するにはcatコマンドにnオプションを使うことでも可能。しかし、行番号を付与する専門のnlコマンドがある。ここではその使い方を詳細に解説。

Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法
Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法

作成からn日経ったファイルを削除したい、そんなときにはfindコマンドを使う。コマンドの記述の方法は3種類あり、それぞれを解説。書き易さもあるがスピードに大きく差がある記述方法もある。