単語を含むファイルを表示するためにfindコマンドを使用する方法は?

単語を含むファイルを表示するためにfindコマンドを使用する方法は?

findコマンドを使用し、findコマンドが実際に見つけたファイルとそのパスだけをコンソールに出力したいと思います。このコマンドを使用すると、確認したすべてのファイルも表示されるためです。

私が使用するコマンドは次のとおりです。

find idle /* > find_idle.txt

検索した内容をすべて出力するようです。 「アイドル」のファイルにはヒット数が表示されません。私はLinux初心者です。

答え1

以下を実行してみてください。

grep -r idle /

これは機能しますが、問題が発生する可能性があります。/procたとえば、仮想ファイルシステムからファイルを検索したくありません。停止、時間がかかる、または興味のない特別な種類のファイルの結果のみを含めることができます。

以下で検索する必要がある場合は、/次の情報が必要です。

find / -xdev -type f -exec grep -H idle '{}' +
  • /*トップレベルの「隠し」ファイルとディレクトリはスキップされます。そのような具体的な目標がなければ*最後まで残さないでください。

  • findテキストファイルから文字列を検索しないでください。それは多くのオプションを持っています。 find / -name idle名前付きファイルを見つけて、フルパスをidle印刷します。 find path-a path-bパス a とパス b に存在すると予想されるすべてのファイルをリストします。

    $ find path-a path-b
    find: ‘path-a’: No such file or directory
    find: ‘path-b’: No such file or directory
    
  • find -xdev他のファイルシステムに移動しないでください/proc。たとえば、/home他のファイルシステムの場合は、それを変更することをお勧めしますfind / /home -xdev ...

  • find -type fディレクトリやその他の特殊ファイルをフィルタリングします。

  • find -execこのファイル名を使用して他のプログラムを実行できます。+ファイル名のバッチを一度に渡す場合は特に使用してください。これはより効率的です。

答え2

WindowsのコマンドラインはUnixのコマンドラインとは全く異なります。 Windowsのコマンドラインユーティリティを知ることはUnixでは役に立ちませんが、その逆も同様です。一方、LinuxやmacOSなどのUnixの変種には共通点が多く、ある変種を理解すれば他の変種も理解するのに役立ちます。

偶然にもWindowsとLinuxの両方find。しかし、彼らはまったく異なることをします。findファイルの内容を取得するためにコマンドを呼び出すと誰も期待しなかったので、最初はあなたの質問はここでうまく受け入れられませんでした。 Unixfindこのユーティリティは、名前、場所、変更時刻などのメタデータに基づいてファイルを検索します。ファイルの内容は表示できません。

ファイルの内容を検索するUnixコマンドは次のとおりです。grep。主な焦点はファイル内を検索することですが、最新バージョンではgrep自動的にディレクトリに移動し、その中のすべてのファイルを検索するように指示することができます。idle現在のディレクトリでこの文字列を含むファイルを見つけるには、次の手順を実行します。

grep idle *

この*文字は、シェルによって現在のディレクトリのファイルリストに展開されるワイルドカードパターンです。これは、Windowsで基本的に(正確ではありませんが)同じように機能するいくつかの機能の1つです。*.*名前にあるファイルを除外する習慣を捨ててください.(Windowsとは異なり、このモードには歴史的な理由で特別な魔法があります)。*必ず除くファイルをクリックしかし、それは別の話です。このコマンドは、この操作を実行するためにサブディレクトリ内のファイルを検索しません。

grep -r idle .

grepここではファイルの一覧表示はそれ自体で行われるため、シェルに依存しません。

システム全体でファイルを見つけるには、次のものを使用できます。

grep -r idle /

しかし、これは多くのシステムファイルを検索するので、おそらくそれをしたくないでしょう。バラよりsourcejediの答えはとても良いですこのトピックについて。

「idle」という単語だけを検索し、「idle」や「side」などの単語の部分文字列である場合は、検索しない場合は、次のオプションを渡して-wくださいgrep

grep -w idle *

いずれにせよ、「アイドル」(Idle、、、、IDLE…)を検索するには、iDle以下を渡します-i

grep -i idle *

一般的に言えば、何かをするためのコマンドを探しているなら、Web検索は最高の友達です。これを行うにはいくつかの方法があります。システム内のコマンドの文書検索しかし、一般的に効率が低下します。探しているものが何であるかについてのアイデアが必要です。コマンド名がわかったら、そのコマンドを使用して、manまたはなどの適切な文書を見つけることができます。私は読書をお勧めしますman grepman findコマンドの使い方を学ぶためにマニュアルページを使う方法は?マニュアルページ一般的に行われている作業の一般的なアイデアはありますが、詳細を忘れてしまったと仮定し、無期限の要約なので、躊躇しないで他のリソースを参照してください。

関連情報