J'ai un fichier /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
J'essaie de trouver si j'ai le * .jdk ailleurs sur mon disque dur. Alors je fais une commande de recherche:
find . -name "*.jdk"
Mais il ne trouve rien. Pas même celui que je connais que j'ai. Comment venir?
find .
ne regarde que dans votre répertoire actuel. Si vous êtes autorisé à rechercher des fichiers dans d'autres répertoires (accès root), vous pouvez utiliser les éléments suivants pour rechercher votre fichier:
find / -type f -name "*.jdk"
Si vous recevez des tonnes de messages d’autorisation refusés, vous pouvez les supprimer en faisant
find / -type f -name "*.jdk" 2> /dev/null
une/
find .
signifie "rechercher (à partir du répertoire en cours)". Si vous souhaitez effectuer une recherche dans tout le système, utilisez find /
; pour rechercher sous /System/Library
, utilisez find /System/Library
, etc.
b /
Il est préférable d'utiliser des guillemets simples autour des caractères génériques. S'il n'y a aucun fichier nommé * .jdk dans le répertoire de travail lorsque vous l'exécutez, alors find
obtiendra une ligne de commande de:
find . -name *.jdk
Cependant, si vous avez des fichiers junk.jdk
et foo.jdk
dans le répertoire current lorsque vous l’exécutez, find
sera démarré avec:
find . -name junk.jdk foo.jdk
… Ce qui va (puisqu'il y en a deux) le confondre et le rendre erroné. Si vous supprimez ensuite foo.jdk
et refait exactement la même chose, vous devriez
find . -name junk.jdk
… Qui ne trouverait jamais un fichier nommé (par exemple) 1.6.0.jdk
.
Ce que vous voulez probablement dans ce contexte, c'est
find /System -name '*.jdk'
… Ou vous pouvez "échapper" au *
en tant que:
find /System -name \*.jdk
Vos JDK sont probablement en majuscule et/ou la version de find
disponible sur OS X ne prend pas par défaut la valeur -print
si aucune action n'est spécifiée; essayer:
find . -iname "*.jdk" -print
(-iname
est semblable à -name
mais effectue une correspondance sans distinction de casse; -print
dit à find
pour imprimer les résultats)
--- MODIFIER ---
Comme l'a noté @Jaypal, évidemment find .
... ne regarde que dans le répertoire actuel (et les sous-répertoires), si vous souhaitez effectuer une recherche sur l'ensemble du lecteur, vous devez spécifier /
comme chemin de recherche.
Le '.' vous utilisez est le répertoire en cours. Si vous commencez dans votre répertoire personnel, il manquera probablement les fichiers JDK.
La recherche de pire cas doit commencer à partir de la racine
find / -name '*.jdk' -o -name '*.JDK' -print
Sinon, remplacez '/' par un chemin qui, vous en êtes certain, devrait être le parent de vos fichiers JDK.
J'espère que ça aide.
find/-type f -name "* .jdk" fonctionne aussi sur Mac