ファイルとディレクトリで特定の文字列または単語を検索する方法


Linuxシステム全体または特定のディレクトリで、特定の単語またはテキストの文字列を含むすべてのファイルを検索しますか。この記事では、その方法について説明します。ディレクトリを再帰的に調べて、特定の文字列を含むすべてのファイルを見つけて一覧表示する方法を学びます。

これを解決する簡単な方法は、grepパターン検索ツールを使用することです。これは、Unixライクなシステム上のファイルやディレクトリからパターンや単語を見つけるための強力で効率的、信頼性があり、最も人気のあるコマンドラインユーティリティです。

以下のコマンドは、〜/ bin ディレクトリを再帰的かつ積極的に検索して、テキスト " check_root "の行を含むすべてのファイルを一覧表示します。

$ grep -Rw ~/bin/ -e 'check_root'

-R オプションが grep に、シンボリックリンクをたどって再帰的に各ディレクトリ下のすべてのファイルを読み込むように指示し、 -w <オプションが指定されている場合のみ/ strong>は、単語全体を形成する一致を含む行のみを選択するように指示し、 -e は検索対象の文字列(パターン)を指定するために使用されます。

root権限を必要とする特定のディレクトリまたはファイルを検索するときは、sudoコマンドを使用してください(rootアカウントでシステムを管理している場合を除く)。

 
$ sudo grep -Rw / -e 'check_root'	

大文字と小文字の区別を無視するには、次に示すように -i オプションを使用します。

$ grep -Riw ~/bin/ -e 'check_root'

テキストの文字列が存在する正確な行を知りたい場合は、 -n オプションを含めます。

$ grep -Rinw ~/bin/ -e 'check_root'

ディレクトリ内に検索したいファイルの種類がいくつかあると仮定して、 --include オプションを使用して、検索するファイルの種類を拡張子で指定することもできます。

この例はgrepにすべての .sh ファイルだけを見るように指示します。

$ grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

さらに、次のコマンドを使用して、複数のパターンを検索することができます。

$ grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

それでおしまい!ファイル内の文字列や単語を見つけるための他のコマンドラインのトリックを知っている場合は、私たちと共有するか、このトピックに関して質問がある場合は、以下のコメントフォームを使用してください。