文字列で䞀臎怜玢する 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コマンドをうたく掻甚しお欲しい情報をピンポむントで取埗しお掻甚しおいこう。

参考資料