web-dev-qa-db-ja.com

特定の拡張子を持つすべてのファイル名を見つける方法

システム上のすべての.pemファイルを見つける必要があります。次はこれを行いますか?

Sudo find / -type f -name *.pem

そうでない場合、どのような方法で検索コマンドを記述して、すべての種類のファイルを検索できますか?

8
David542

あなたは正しい軌道に乗っています-シェルではなくfindによって解釈されるようにパターンを引用する必要があります:

Sudo find / -type f -name '*.pem'
18
mgorven

find /の使用は通常非常に遅くなります。 locateの使用ははるかに高速ですが、部分文字列マッチングよりも複雑なものをサポートしていないため、多少不正確です。 .pembrokeというディレクトリが見つかり、その中にあるすべてのファイルとともにLocateによって返されます。

ただし、locategrepを組み合わせると、速度and精度になります。また、Sudoも不要です。

locate .pem | grep "\.pem$"

欠点は? locateが使用するデータベースは通常、1日に1回のみ更新されるため、最近の変更(追加、削除、名前の変更など)は検出されません。

3
Ladadadada

ほとんど!

Sudo find / -type f -name \*.pem

または

Sudo find / -type f -name "*.pem"

それ以外の場合、シェルは検索ではなく*を解釈します。

1
faker

...または、mlocateがコンピューターで実行されていて、最も実際のデータが必要ない場合は、locateコマンドを使用します

 locate * .pam 

以前に作成されたデータベースでファイルを見つけるため、より高速です。システム全体ではありません。

1
stderr
Sudo find / | grep .pam

うまくいくと思います。

0
William Fleming