ファイルがあります/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
私のハードドライブのどこかに* .jdkがあるかどうかを確認しようとしています。そこで、検索コマンドを実行します。
find . -name "*.jdk"
しかし、何も見つかりません。私が知っている人でさえありません。どうして?
find .
は、現在のディレクトリのみを検索します。他のディレクトリでファイルを検索する権限がある場合(ルートアクセス)、次を使用してファイルを見つけることができます-
find / -type f -name "*.jdk"
あなたが許可拒否メッセージのトンを取得している場合、あなたはそれを抑制することができます
find / -type f -name "*.jdk" 2> /dev/null
a /
find .
は、「検索(現在のディレクトリで開始)」を意味します。システム全体を検索する場合は、find /
;を使用します。 /System/Library
で検索するには、find /System/Library
などを使用します。
b /
ワイルドカードを単一引用符で囲む方が安全です。これを実行したときに、作業ディレクトリに* .jdkという名前のファイルがない場合、find
は次のコマンドラインを取得します。
find . -name *.jdk
ただし、実行時にcurrentディレクトリにファイルjunk.jdk
およびfoo.jdk
がある場合、find
は代わりに以下で開始されます:
find . -name junk.jdk foo.jdk
…(2つあるため)混乱させ、エラーを引き起こします。その後、foo.jdk
を削除して、まったく同じことを再度行うと、
find . -name junk.jdk
…(_)1.6.0.jdk
という名前のファイルは決して見つかりません。
このコンテキストでおそらく必要なのは、
find /System -name '*.jdk'
…または、次のように*
を「エスケープ」できます。
find /System -name \*.jdk
おそらく、JDKは大文字であるか、OS Xで使用可能なfind
のバージョンはデフォルトでは-print
アクションが指定されていない場合。試してください:
find . -iname "*.jdk" -print
(-iname
のようなものです -name
ただし、大文字と小文字を区別しない一致を実行します。 -print
はfind
に結果を出力するように言います)
---編集---
@Jaypalが指摘したように、明らかにfind .
...ドライブ全体を検索する場合は、現在のディレクトリ(およびサブディレクトリ)のみを検索します。/
検索パスとして。
「。」使用しているのは現在のディレクトリです。ホームディレクトリで起動している場合、おそらくJDKファイルが失われます。
最悪の場合の検索はルートから開始することです
find / -name '*.jdk' -o -name '*.JDK' -print
それ以外の場合は、「/」をJDKファイルの親であることが確実なパスに置き換えます。
これがお役に立てば幸いです。
find/-type f -name "* .jdk"はMacでも動作します