Ich habe eine Datei /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Ich versuche herauszufinden, ob ich * .jdk irgendwo anders auf meiner Festplatte habe. Also mache ich einen Suchbefehl:
find . -name "*.jdk"
Aber es findet nichts. Nicht einmal der, den ich kenne. Woher?
find .
sucht nur in Ihrem aktuellen Verzeichnis. Wenn Sie die Berechtigung haben, nach Dateien in anderen Verzeichnissen zu suchen (root-Zugriff), können Sie die folgenden Dateien verwenden, um Ihre Datei zu finden
find / -type f -name "*.jdk"
Wenn Sie Tonnen von Nachrichten erhalten, denen die Berechtigung verweigert wurde, können Sie dies unterdrücken
find / -type f -name "*.jdk" 2> /dev/null
ein/
find .
bedeutet "find (beginnend im aktuellen Verzeichnis)." Wenn Sie das gesamte System durchsuchen möchten, verwenden Sie find /
; Um unter /System/Library
zu suchen, verwenden Sie find /System/Library
usw.
b /
Es ist sicherer, einfache Anführungszeichen um Platzhalterzeichen zu verwenden. Wenn sich beim Ausführen keine Dateien mit dem Namen * .jdk im Arbeitsverzeichnis befinden, wird find
eine Befehlszeile mit folgendem Befehl erhalten:
find . -name *.jdk
Wenn Sie jedoch zufällig die Dateien junk.jdk
und foo.jdk
im Verzeichnis current haben , wenn Sie es ausführen, wird find
stattdessen mit:
find . -name junk.jdk foo.jdk
… Was es (da es zwei gibt) verwechseln wird und es zum Irrtum führen wird. Wenn Sie dann foo.jdk
löschen und dasselbe noch einmal tun, müssen Sie dies tun
find . -name junk.jdk
… Die niemals eine Datei mit dem Namen (z. B. 1.6.0.jdk
) finden würde.
Was Sie in diesem Zusammenhang wahrscheinlich wollen, ist
find /System -name '*.jdk'
… Oder Sie können den *
wie folgt "fliehen":
find /System -name \*.jdk
Wahrscheinlich sind Ihre JDKs in Großbuchstaben und/oder die unter OS X verfügbare Version von find
ist nicht standardmäßig auf -print
eingestellt, wenn keine Aktion angegeben ist. Versuchen:
find . -iname "*.jdk" -print
(-iname
ist wie -name
, führt jedoch eine Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung durch; -print
sagt zu find
, um die Ergebnisse auszudrucken.)
--- BEARBEITEN ---
Wie von @Jaypal festgestellt, sucht find .
... offensichtlich nur das aktuelle Verzeichnis (und die Unterverzeichnisse). Wenn Sie das gesamte Laufwerk durchsuchen möchten, müssen Sie /
als Suchpfad angeben.
Das '.' Sie verwenden das aktuelle Verzeichnis. Wenn Sie in Ihrem Heimatverzeichnis beginnen, werden die JDK-Dateien wahrscheinlich fehlen.
Die Suche im ungünstigsten Fall beginnt mit root
find / -name '*.jdk' -o -name '*.JDK' -print
Andernfalls ersetzen Sie '/' durch einen Pfad, der Ihrer JDK-Dateien übergeordnet sein sollte.
Ich hoffe das hilft.
find/-type f -name "* .jdk" funktioniert auch auf dem Mac