Comment trouver un répertoire sur linux?

454

J'ai un VPS avec Suse Linux 10.3 .

Je me suis connecté via SSH / putty et j'essaie de localiser mes fichiers Web.

Comme je télécharge via FTP dans un répertoire appelé httpdocs , je suppose que ce répertoire existe quelque part.

Mes recherches sur Google m'ont appris à le faire, allez dans mon répertoire racine et tapez:

find httpdocs -type d

mais il dit " Aucun fichier ou répertoire de ce type ".

Comment puis-je trouver ce répertoire?

Edward Tanguay
la source
4
Si quelqu'un se le demande, la commande de la question trouve tous les répertoires ( -type d) dans l'entrée de répertoire httpdocs(par rapport au répertoire de travail en cours, généralement mais pas nécessairement un répertoire). Il échoue avec un message d'erreur car il n'y a pas d'entrée de répertoire httpdocsdans le répertoire racine du système et donc pas de point de départ pour une recherche.
Daniel Beck

Réponses:

610

Il est:

find / -type d -name 'httpdocs'

le premier paramètre "/" est l'endroit où chercher, dans ce cas "/" c'est le système entier.

-name pourrait être -iname pour ignorer la casse

aussi -type n'est pas obligatoire

utiliser: man find pour plus d'options

OldJim
la source
2
trouver / -name 'httpdocs' fonctionne très bien
Edward Tanguay Le
91
Cela n’a aucune importance pour les recherches simples, mais pour les commandes de recherche plus complexes, il convient de noter que les éléments sont évalués dans l’ordre dans lequel ils se trouvent sur la ligne de commande. Donc, vous voudrez peut-être avoir le type-d (répertoires seulement) avant -name, afin d’accélérer les choses. Encore une fois, cela n’a pas beaucoup d’importance ici, mais lorsqu’il s’agit de recherches plus complexes, la vitesse de recherche peut être considérablement améliorée.
Dominic Eidson
14
En réalité, le -nametest est plus rapide que la plupart des autres tests, car il -namecorrespond à la liste du répertoire, qui est déjà chargée à partir du disque, et les autres tests doivent effectuer une opération stat(2)pour obtenir les informations sur le fichier. Après le premier stat()appel à un fichier, un des tests ultérieurs reçoivent de la mémoire, par exemple: -type f -mtime -10.
Arcege
24
Si vous souhaitez effectuer une recherche sur l'ensemble du système de fichiers, en particulier sur un serveur, il est généralement bon de l'utiliser, de nicesorte que la recherche ne nécessite pas trop de ressources de processus plus critiques:nice find / ...
Arcege
16
J'ajouterais 2> / dev / null pour éviter que mes résultats de recherche ne soient masqués dans toutes les erreurs d'autorisation.
Jason Yeo
62

Cette commande devrait vous donner ce que vous cherchez:

find / -type d -name httpdocs

qui recherchera à la racine de votre serveur les répertoires portant le nom httpdocs ou si vous souhaitez simplement rechercher dans le répertoire en cours, remplacez le '/' par un '.'

Une autre commande que vous pouvez essayer est de localiser vous feriez quelque chose comme:

locate httpdocs
Zypher
la source
localiser httpdocs me dit "localiser: commande non trouvée"
Edward Tanguay
4
Pour ceux qui utilisent la commande "localiser" (étant donné qu'elle existe dans votre système), assurez-vous que la base de données qu'elle recherche est à jour; normalement, un travail cron s'en occupe. Sinon, lancez "updatedb" (étant root). Ensuite, lancez votre nécessaire "localiser <un fichier>". Ceci est nécessaire pour rechercher les fichiers / répertoires ajoutés récemment.
David Ramirez
+1 pour localiser. C'est beaucoup plus rapide mais seulement si son index est à jour. Heureusement, quelque chose comme "httpdocs" ne changera pas d'emplacement fréquemment. Si vous prévoyez de rechercher de manière répétée des fichiers sur une machine, quelques minutes sont nécessaires pour configurer le travail cron updatedb.
Doug Harris
1
De plus, dans de nombreux cas, Locate retournera trop de résultats, car tous les 100 000 fichiers de ce répertoire seront affichés. Dans ce cas particulier, si chaque utilisateur dispose de son propre document httpdocs avec 100 ou 1000 fichiers, le résultat souhaité par l'OP sera probablement perdu.
Jistanidiot
+1 pour localiser ... Je garde ma base de données mise à jour, cette commande est donc très utile ... Excellente idée.
nicorellius
27
find / -type d -name httpdocs 2> /dev/null

Cela éliminera tous les messages d'erreur que vous aurez probablement (lire, toujours) quand vous ne le faites pas en tant qu'utilisateur root. Je le recommanderais de cette façon.

utilisateur2940456
la source
2
L' 2> /dev/nulloption est très utile. Sinon, il peut être difficile de voir les résultats souhaités ...
Gottlieb Notschnabel
13

Il est important de connaître le paramètre -iname pour rechercher des modèles "insensibles à la casse" et l'utilisation de caractères génériques: *,?, Etc.

Deux exemples:

Recherche dans tous les fichiers de / root contenant la chaîne "Linux", sans distinction de casse:

find  /root -type f -iname "*linux*"

Rechercher dans tous les répertoires de / root contenant la chaîne "Linux", sans distinction de casse:

find  /root -type d -iname "*linux*"

Extrait de ici:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html

LunaSeven
la source
Cette question concerne la façon de trouver un répertoire dont vous connaissez le nom, pas comment trouver un répertoire dont vous connaissez le nom (environ). En outre, la réponse acceptée (il y a plus de 6 ans!) Mentionne déjà -inamecomme une alternative insensible à la casse -name.
G-Man
9

vous l'avez presque. la syntaxe correcte serait:

find / -type d -name httpdocs

Le répertoire est probablement sous /var/www/

chrisbunney
la source
qui me dit "les chemins doivent précéder l'expression"
Edward Tanguay le