質問: linuxでfindコマンドを使用してpdfファイルを検索します 私の目標は、リモートマシン上のすべてのpdfファイルを見つけることなので、便利なコマンドfindを使用します。だから私は検索〜* .pdf検索〜「* .pdf」
回答: 何を検索しているのかを示す述語が不足しているだけです(たとえば、-name)名前でホームディレクトリを検索するには:find ~ -name \*.pdf ワイルドカード*は、シェルがそれを解釈する前にシェルが解釈しないようにエスケープする必要があることに注意してください。 '*.pdf'および"*.pdf"を使用すると、\*.pdfと同じ効果があります。大文字と小文字を区別せずに見つけるには:find ~ -iname \*.pdf 結果をファイルのみに整理するには(名前式がおそらくこれを処理しますが、奇妙な名前のディレクトリがある場合に備えて):find ~ -type f -iname \*.pdf 検索がシンボリックリンクをたどることを確認するには(通常、検索を行うときに自分でこれを実行したい):find ~ -follow -type f -iname \*.pdf 見つけたファイルで何かを行うには:stdoutリダイレクトを使用してこれをファイルにダンプするか(たとえば、最後に> filenameをタックする)、または-execオプションを使用してコマンドを実行します(manを参照)。詳細については、ページを参照してください)。ただし、後者は一度に各ファイルに対してコマンドを実行します。多くの場合、xargsコマンドで、見つかったファイルを引数として別のコマンドに一度に、または一度に大きなチャンクで渡す方が高速です。たとえば、アドホック(ただしインデックス付けされていない)の場合、ヘッダーファイルを取得します。find ~ -follow -type f -name \*.h | xargs grep -nh "identifier" そして最後の拡張機能は、スペースを含むファイルとディレクトリがある場合に最後のコマンドを正しく機能させるためです。find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nh "identifier"