文字列で一致検索する find

【連載】

LinuxユーザーのためのWindowsコマンド超入門

【第19回】文字列で一致検索する find

[2019/01/25 10:28]後藤大地 ブックマーク ブックマーク

  • サーバ/ストレージ

サーバ/ストレージ

文字列で一致検索する find

WindowsのコマンドとLinuxのコマンドには同じ名前のものがある。同じ名前で機能も同じであればよいのだが、同じ名前でまったく機能が異なるものがある。そうしたコマンドのひとつにfindコマンドがある。

findコマンドはLinuxではファイルやディレクトリを探すためのコマンドだ。基本的に名前で検索を行い、再帰的に指定したディレクトリ下に一致するファイルやディレクトリがあるかを検索する。豊富なオプションを持っておりさまざまな条件で検索できるほか、検索に一致したファイルに対して任意のコマンドを実行するための機能も用意されている。頻用され、かつ、オプションが豊富なコマンドのひとつだ。

Windowsにもfindコマンドが存在しているのだが、WindowsのfindコマンドはLinuxのfindコマンドとはかなり異なる。WindowsのfindコマンドはLinuxにおけるgrepコマンドに近いものがあり、ファイルが指定された場合には指定された文字列が含まれている行を出力する。パイプラインで接続された場合には、パイプライン経由で送られてくるテキストデータに対してgrepコマンドのように一致する文字列を含む行だけを出力する。

findコマンドの基本的な使い方は次のようになる。一致させる文字列と、処理対象となるファイルパスを指定する。パイプラインで接続した場合にはファイルを指定する必要はない。

findコマンドの使い方

find [/v] [/c] [/n] [/i] [/off[line]] "文字列" [[ドライブ:][パス]ファイル名[...]]

findコマンドで指定できるパラメータやキーワードは次のとおり。

パラメータ 内容
/v 指定した文字列を含んでいる行だけを表示せず、それ以外を表示する
/c 指定した文字列を含んでいる行の数をカウントして出力
/n 出力する行の先頭に行番号を付与する
/i 文字列を大文字と小文字を区別せずにマッチング処理する
文字列 一致対象とする文字列を指定する。文字列はダブルクォーテーションで囲む必要がある。ダブルクォーテーションそのものを対象として含めたい場合には”“と指定する

findコマンドは基本的にアルファベットの大文字小文字を区別して動作する。パラメータとして/iを指定すると、大文字と小文字を区別しないようになる。あとはパラメータとして/vを使用すると、一致した行だけが表示されなくなる。つまり、特定の行だけを削除したいといった場合に利用できる。/cは行数をカウントして出力、/nは行番号の出力という指定だ。

findコマンドではキーワードとして指定する文字列をかならずダブルクォーテーションで囲む必要がある。このため、キーワードにダブルクォーテーションそのものを含めたい場合には工夫が必要だ。その場合にはダブルクォーテーションを2つ続けて「”“」と書く。これで1つのダブルクォーテーションとして認識されるようになる。

findコマンドを使ってみよう

findコマンドのもっとも基本的な使い方は「find “キーワード” ファイル」だ。実行すると次のように指定した文字列が含まれている行だけが出力されることを確認できる。大文字と小文字は区別されており、別のキーワードとして一致対象になっていることもわかる。

findコマンドのもっとも基本的な使い方: 大文字と小文字は別物として区別されている

findコマンドにパラメータとして/iを指定すると、次のように先ほどの検索結果がすべて出力されることがわかる。/iを指定すると大文字と小文字を区別しないで検索するようになるためだ。

/iパラメータを指定することで大文字と小文字を区別しないで検索することができる

findコマンドはパイプラインで接続することでコマンド出力をフィルタリングできる。たとえば、dirコマンドで次のような出力が得られたとする。

dirコマンドの実行例

dirコマンドにfind “DIR”を接続すると、次のようにDIRが含まれている行だけが出力されるようになる。

dirコマンドの出力をfindコマンドでフィルタリング

同じようにfind “DIR”でフィルタリングするものの、今度は次のように/vパラメータを指定してみる。こうすると今度は一致した行だけが表示されなくなる。

findに/vパラメータを指定すれば一致した行だけが出力されなくなる

つまりfindとfind /vは排他的な関係にあることがわかる。

findで一つ上のコマンドプロンプト利用を

Linuxでgrepコマンドはもっとも利用するコマンドのひとつだ。CUIベースの操作ではテキストの出力が操作の大きな割合を占めるわけだが、grepコマンドを使うことで欲しいデータだけに絞ることができる。テキスト処理はCUI作業の大きなポイントであり、grepを使うこなすことはそのままCUI作業の効率を引き上げることにつながる。

同じことはfindコマンドにも言える。findコマンドを利用することでコンソールウィンドウに出力されるテキストを抑えることができ、必要な情報だけを得やすくなる。多くのテキストの中から必要になるデータを目で追うというのは、不確実だし非効率だ。findコマンドをうまく活用して欲しい情報をピンポイントで取得して活用していこう。

参考資料

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
ソフトウェア開発自動化入門
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る