256 votes

Trouver un fichier par son nom en utilisant la ligne de commande

Je voudrais déterminer l'emplacement d'un fichier en utilisant la ligne de commande. J'ai essayé :

find . -type f -name "postgis-2.0.0"

y

locate postgis-2.0.0

en vain. Quelle est la commande qui permet de déterminer le répertoire du fichier, à condition de connaître son nom ?

335voto

adempewolff Points 11198

Essayez find ~/ -type f -name "postgis-2.0.0" à la place.

Utilisation de . ne cherchera que dans le répertoire courant. ~/ cherchera dans tout votre répertoire personnel (probablement là où vous l'avez téléchargé). Si vous avez utilisé wget en tant que racine, il est possible qu'il soit ailleurs, vous pouvez donc utiliser / pour rechercher dans l'ensemble du système de fichiers.

Goodluck

38voto

reverendj1 Points 15127

J'essaierais :

sudo find / -type d -name "postgis-2.0.0"

Le . signifie que la recherche se fait uniquement dans le répertoire actuel, il est préférable de tout rechercher à partir de la racine si vous ne savez vraiment pas. De même, le type -f signifie rechercher des fichiers, et non des dossiers. Ajout de sudo permet de rechercher dans tous les dossiers/sous-dossiers.

Votre syntaxe pour locate est correcte, mais vous devrez peut-être exécuter

sudo updatedb

première. Pour une raison quelconque, je n'ai jamais eu de chance avec locate cependant.

locate utilise la base de données des fichiers et des répertoires faite par updatedb . Donc, si vous avez téléchargé un nouveau fichier, il y a plus de chances que votre updatedb n'a pas mis à jour la base de données des fichiers et des répertoires. Vous pouvez utiliser sudo updatedb avant d'utiliser locate programme d'utilité publique. updatedb s'exécute généralement une fois par jour par lui-même sur les systèmes linux.

18voto

zanbri Points 281

Les autres réponses sont bonnes, mais je trouve que d'omettre Permission denied les déclarations me donnent des réponses plus claires (omission stderr en raison de l'absence d'exécution sudo ):

find / -type f -iname "*postgis-2.0.0*" 2>/dev/null

où :

  • / peut être remplacé par le répertoire à partir duquel vous voulez lancer votre recherche
  • f peut être remplacé par d si vous recherchez un répertoire au lieu d'un fichier
  • -iname peut être remplacé par -name si vous voulez que la recherche soit sensible à la casse
  • le site * dans le terme de recherche peuvent être omis si vous ne voulez pas que les caractères génériques soient utilisés dans la recherche.

Une alternative est :

find / -type f 2>/dev/null | grep "postgis-2.0.0"

Cette méthode renvoie des résultats si le terme recherché correspond à n'importe quel endroit du chemin d'accès complet du fichier, par ex. /home/postgis-2.0.0/docs/Readme.txt

15voto

Mitch Points 102545

Find est l'un des outils Linux/Unix les plus utiles.

Essayez find . -type d | grep DIRNAME

9voto

RuiVBoas Points 191

Essayez find . -name "*file_name*"

  • où vous pouvez remplacer '.' (recherche dans le répertoire courant) par '/' (recherche dans l'ensemble du système) ou '~/' (recherche dans le répertoire personnel).

  • où vous pouvez changer "-name" en "-iname" si vous ne voulez pas être sensible à la casse.

  • où vous pouvez changer " nom_fichier " (un fichier qui peut commencer et finir par ce qu'il est) au nom exact du fichier.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X