it-swarm-ja.com

Linuxでfindコマンドを使用してPDFファイルを検索します

私の目標は、リモートマシン上のすべてのPDFファイルを見つけることなので、便利なコマンドfindを使用します。だから私は

検索〜* .pdf
検索〜「* .pdf」
11
Martin

findは役に立たないというわけではありません。あなたはそれを適切に使用していないだけです。

試してください:

find . -type f -iname '*.pdf'

30
Mitch Dempsey

findutils のドキュメントをご覧ください。 findコマンドは非常に強力なコマンドであるため、インターフェイスがやや複雑になります。あなたはあなたが望むことをすることができます:

find . -type f -iname '*.pdf' 

上記のコマンドは、「*。pdfと一致する大文字と小文字を区別しない名前を持つファイルタイプのエントリを。内で検索する(およびそのような一致の名前を出力する)」ことを意味します。 findコマンドは、実際には、見つかったファイルに対してコマンドを実行するために使用できます(ファイル名の出力の代わりに、またはそれに加えて)。ただし、目的によっては、 locate コマンドの方が快適な場合があります。 pdatedb -を使用してlocateデータベースを構築したとすると、非常に簡単になります。ファイルを検索します。例えば:

locate '*.pdf'

また、locateはファイル名のインデックス(locateデータベース)を使用するため、locateコマンドは通常findコマンドよりも高速であるのに対し、findは各呼び出しの階層をたどります。

何を検索しているのかを示す述語が不足しているだけです(たとえば、-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"
6
Owen S.

これを見てください チュートリアル

あなたがやりたいことは

find . -name "*.pdf"
3
luke

過去x日以内にダウンロードが必要なファイルを見つける

find ~ -type f -iname '*.pdf' -mtime -1

大文字と小文字に関係なく、自宅の~ディレクトリ以下に拡張子.pdfのPDFファイルがあり(inameのi)、1日前までに変更されています。 mtime -1を追加しました; mtimeに-60を指定すると、最後の60日間になります。

0
r0berts

「見つかった」ファイル内で検索を実行するには、次の構造があります。

find <dir> -type f -iname <name> -exec grep -H <string> {} \;

Execコマンドは、エスケープされた「;」で終了する必要がありますまた、grepが「string」があるファイル内の行に加えてファイルパスを出力するには、-Hが必要です。

0
Ted Ballou

私はfindをgrepのように組み合わせていました

見つける。 | grep -i ".pdf"

おそらく最高の効率ではありませんが、それはうまく機能します。

0
Tiberiu Hajas